Google 爬虫能否读取延迟脚本在页面加载后插入的 JSON-LD?

Can the Google crawler read JSON-LD that is inserted after page load by a deferred script?

我有一个站点,其中的内容通过延迟的 JavaScript 小部件拉入页面,以使其成为非阻塞并确保页脚中的依赖脚本在小部件之前加载:

<script defer src="//my-server.com/my-widget.js"></script>

小部件还使用我页面的 URL 为 Google structured data (JSON-LD) into the page, but I'm not seeing these results in the Google search results page. When I check the Rich Test Results tool 注入标记 我可以看到 JSON-LD 标记未填充在呈现的页面标记中。

Google's own documentation 说:

Google can read JSON-LD data when it is dynamically injected into the page's contents, such as by JavaScript code or embedded widgets in your content management system.

但是它没有说明这是否仍然适用于具有 deferasync 属性的脚本。我无法让它工作,但我需要小部件异步执行,否则我会因具有阻止脚本而在 PageSpeed Insights 中受到惩罚。有人找到解决方案了吗?

我想,你不能。 Google 引擎将在 dom 加载后立即读取架构。如果你关心页面速度并且担心构建 ld+json 模式需要太多时间,你可以考虑使用微数据而不是 JSON-LD.