具有延迟加载图像的结构化数据?

Posted

技术标签:

【中文标题】具有延迟加载图像的结构化数据?【英文标题】:Structured Data with Lazy-Loaded images? 【发布时间】:2016-02-05 23:49:44 【问题描述】:

出于 SEO 原因,我想在产品图片上添加结构化数据标签。

<img class="img-responsive" src="placeholder URL" data-src="Actual URL"/>

我遇到的问题是:Google 获取了我的 SRC 值,它只是一个占位符图像 - 实际图像(data-src)只有在用户滚动到足以将图像显示出来时才会加载。

【问题讨论】:

【参考方案1】:

使用&lt;noscript&gt; 块并将带有结构化数据标签的图像放入其中。然后,Google 将使用该图像而不是图像占位符。这也意味着任何没有启用 JS 的用户(有一些,但他们还在!)也将仍然看到图像。注意:如果未启用 JS,则需要禁用占位符图像,否则非 JS 用户将看到两个图像。

例如

 <img class="img-responsive js-only" src="placeholder URL" data-src="Actual URL"/>
 <noscript>
 <img src="Actual URL" data-src="Actual URL" itemprop="image"/>
 </noscript>

使用 Google 的结构化数据测试工具 - https://developers.google.com/structured-data/testing-tool/ 验证了这种方法。

编辑:如何仅使用 JS 显示图像:

您不需要隐藏 noscript 图像 - noscript 块内的任何内容仅在禁用 javascript 时使用。只有在启用 JS 时才能显示响应式图像,方法是在 html 元素中添加 class="no-js",在 HEAD 中添加以下 JavaScript 块:

<script>
    var headElement = document.getElementsByTagName("html")[0]; 
    var regExp = new RegExp('(\\s|^)no-js(\\s|$)'); 
    headElement.className = headElement.className.replace(regExp,' js ');  
</script> 

以及以下 CSS:

html.no-js .js-only 
    display:none;

html.js .no-js 
    display:none
 

【讨论】:

谢谢安迪!我想知道如果我在页面加载中隐藏 我已经添加了对答案的响应,因为代码格式在 cmets 中不起作用。 漂亮、整洁、纤薄的解决方案! 好主意,虽然现在是 2019 年,但 Google 似乎看到了延迟加载图像上的 URL。我可以在 Search Console(URL 检查中的“已抓取页面”)中验证它是否执行了我的 JavaScript 以使用真实的 SRC 更新图像,甚至添加了一个 lazy-image-loaded CSS 类,我的 JS 在加载图像后添加了该类。结构化数据测试工具也看到了真正的懒加载图片源。仍然希望将您的 &lt;noscript&gt; 图像想法实现为一般备份,并用于其他不执行 JS 的搜索引擎,并适应那些禁用 JS 的少数搜索引擎。【参考方案2】:

只需将属性 content 添加到您的 img 标记中,并使用真实的图像 url。 Google 会使用它,但浏览器会忽略它。

<img src="placeholder URL" data-src="Actual URL" itemprop="image" content="Actual URL" />

我认为这更好,因为您不需要额外的 metanoscriptJS 代码,只需一个属性。

使用 Google 的结构化测试工具 (https://search.google.com/structured-data/testing-tool) 进行测试和试用

【讨论】:

那么 srcset 呢?还是总是链接图片的最大版本? 我不确定 Google 是否将 srcset 用于结构化数据或 SEO。我个人不会担心 srcset,但正如您所说,最大的图像可能对 Google 最有价值。【参考方案3】:

我认为一个解决方案是使用元内容标签,因为它们不会像这样呈现任何东西:

<meta content="/img-1.jpg" itemprop="image">
<meta content="/img-2.jpg" itemprop="image">
<meta content="/img-3.jpg" itemprop="image">

【讨论】:

【参考方案4】:

很简单,只需添加:

错字不错

<meta  itemprop="image" content="your_image_url" />

注意最后的“/”

【讨论】:

以上是关于具有延迟加载图像的结构化数据?的主要内容,如果未能解决你的问题,请参考以下文章

具有延迟加载和下载图像的 ListView [重复]

将图像从 Parse 加载到 UICollectionView 单元格没有延迟

Xcode:从核心数据中的图像数据延迟加载图像

在具有滚动索引的 UITableView 中延迟加载图像

Numpy - 将具有第一行的csv作为名称立即加载到结构化数组中?

Numpy - 将具有第一行的csv作为名称立即加载到结构化数组中?