重现步骤
tldr:目标是找出如何在开启语义时提高性能,并找出需要改进的地方。
当在Flutter中开启语义时,由于语义树的编译,应用程序可能会出现性能问题。我们过去只是有条件地开启语义,但现在开始出现了一些场景,我们希望默认开启。例如:
- web平台无法判断辅助技术是否正在运行
- web SEO使用语义树进行索引
- android应用爬虫也使用accessibilitynodes来爬取应用程序。
我们现在需要做的是: - 确定性能是否真的糟糕到足以阻止我们这样做
- 如果答案是肯定的,那么是什么导致了性能问题
- 如果答案是肯定的,那么需要做什么才能让它运行得更快。
相关问题
滚动卡顿 #61193
4条答案
按热度按时间uqzxnwby1#
你能解释一下你关于SEO的第二点是什么意思吗?
我的理解是,SEO机器人不会运行JavaScript或Wasm,所以它们基本上只能看到一个空的index.html。换句话说,当机器人读取应用程序时,Flutter不会运行。
6jjcrrmo2#
SEO爬取DOM元素树。由于我们在语义开启时为语义目的创建了一个表示Flutter应用程序的DOM树,我们认为更合理的做法是将这个DOM树用于SEO爬取。
问题在于,当SEO发生时,语义DOM树可能并不总是存在,有一些解决方法,但这涉及到一些hack。
9jyewag03#
@chunhtai 谷歌爬虫不会执行JavaScript,或者最近有变化吗?
编辑:似乎我错了,爬虫会执行一些JavaScript。
gdrx4gfi4#
一些新的发现
在滚动静态内容时,语义更新大约需要2.6毫秒在一个6毫秒的帧中。所以几乎是50%。