【问题标题】:Can the Google crawler read JSON-LD that is inserted after page load by a deferred script?Google 爬虫能否读取延迟脚本在页面加载后插入的 JSON-LD?
【发布时间】:2019-10-06 21:59:28
【问题描述】:

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

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

该小部件还将Google structured data (JSON-LD) 的标记注入页面,但我在 Google 搜索结果页面中没有看到这些结果。当我使用我的页面 URL 检查Rich Test Results tool 时,我可以看到 JSON-LD 标记未填充到呈现的页面标记中。

Google's own documentation 说:

当 JSON-LD 数据动态注入页面内容时,Google 可以读取数据,例如通过 JavaScript 代码或内容管理系统中的嵌入式小部件。

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

【问题讨论】:

    标签: javascript asynchronous deferred deferred-execution deferred-loading


    【解决方案1】:

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

    【讨论】:

    • 谢谢,这很有帮助。有一些数据我想包含在架构中但不显示在页面上,有没有解决方案?
    • @LewisDonovan 抱歉回答迟了。你当然可以。如果您想拥有数据但将其隐藏在页面中,您可以使用meta 标签。看这个page的最后一个例子但是,要小心,如果你的微数据与你显示的根本不同,谷歌引擎可能不喜欢这样,它会采取行动(在极端情况下,它甚至可能把你的网站列入黑名单)
    • 明白。感谢您的帮助。
    猜你喜欢
    • 2023-02-11
    • 1970-01-01
    • 1970-01-01
    • 2012-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-25
    相关资源
    最近更新 更多