【问题标题】:would lazy-loading img src negatively impact SEO延迟加载 img src 会对 SEO 产生负面影响
【发布时间】:2011-03-26 07:34:46
【问题描述】:

我正在开发一个购物网站。我们在结果中显示 40 张图像。我们希望减少页面的加载时间,并且由于图像会阻止 onload 事件,我正在考虑通过最初设置 img.src="" 然后在 onload 之后设置它们来延迟加载它们。请注意,这不是 html 片段的 ajax 加载。存在图像 html 以及 alt 文本。只是图像 src 被推迟了。

既然他们正在测量网站速度,是否有人知道这是否会损害 SEO 或导致谷歌惩罚框?

【问题讨论】:

标签: seo lazy-loading pagespeed


【解决方案1】:

图像不会阻塞任何东西,它们已经被延迟加载。 onload 事件通知您所有内容都已下载,包括图像,但在文档准备好之后很久。

可能会因为丢失的关键字和空的 src 属性而损害您的排名。您可能失去的比获得的多 - 您最好以其他方式优化您的页面,包括您的图像。 Gzip + 更少的请求 + 适当的过期时间 + 快速的静态服务器应该有很长的路要走。还有一个您可能感兴趣的free CDN

我确信谷歌并不是为了让整个网络从源代码中删除他们的图像来获得一些分数。请记住,他们认为 3 秒以下的任何内容都是很好的加载时间,在诉诸伏都教技术之前有足够的空间来回旋。

【讨论】:

  • 关于谷歌使用什么信号来测量页面速度的讨论很多。共识主要是他们将 document.complete 事件视为决定性指标。 Document.complete 也称为 window.onload。有人担心延迟加载图片内容可能会被视为“黑帽 seo”。见 - webpagetest.org/forums/…
  • 没有document.complete 这样的东西。如果你指的是微软的非标准 DocumentComplete event ,它类似于 DOMContentReady,在加载事件之前触发。
  • @ricardo - 实际上,不建议对您的基本页面内容进行 ajaxing,因为这不会被 google bot 抓取索引。
  • 您实际上可以make it crawlable,但这不是重点。我认为这是一个愚蠢的想法。
  • 从技术上讲,当浏览器接收并解析所有标记时,文档就完成了。之后加载图像。因此,DOMContentLoaded 与 onload。 Here's a detailed explanation
【解决方案2】:

从纯粹的 SEO 角度来看,您不应该将搜索结果页面编入索引。您应该为您的主页和产品详细信息页面编制索引,并使用可抓取的方法访问这些页面(类别页面、sitemap.xml 等)

这是 Matt Cutts 在 2007 年的一篇文章中就该主题所说的话:

一般而言,我们发现用户通常不希望在搜索结果中看到搜索结果(或通过代理获得的网站副本)。不会增加太多价值的网站和搜索结果的代理副本已经属于我们的质量指南(例如,“不要创建多个页面、子域或具有大量重复内容的域。”和“避免为搜索引擎或其他“千篇一律”的方法……”),因此 Google 确实会采取措施减少这些页面对我们索引的影响。

http://www.mattcutts.com/blog/search-results-in-search-results/

这并不是说你会因为索引搜索结果而受到惩罚,只是说谷歌对它们的重视程度很低,所以延迟加载图像(或不延迟加载)不会有太大的影响影响。

【讨论】:

    【解决方案3】:

    有一些不同的方法可以解决这个问题。

    图片不会阻止加载。 Javascript可以;样式表在一定程度上做了(很复杂);图像没有。但是,它们消耗 http 连接,其中浏览器一次只会触发每个域 2 个。

    所以,你可以做的应该是无忧无虑的,“正确的事情”是做一个穷人的 CDN,然后将它们放在你自己的站点和服务器上的 www1、www2、www3 等。有很多方法可以轻松做到这一点。

    另一方面:不,它不应该影响您的 SEO。实际上,我认为 Google 甚至不会费心加载图片。

    【讨论】:

    • 所以,onload 事件定义得很好。它会等待您的内容完成完全加载,包括脚本、iframe 内容和图像。脚本是最严重的违规者,因为它们不并行加载,但所有这些都会阻止 onload 事件。我认为谷歌衡量现实世界的页面加载时间与谷歌工具栏的安装相比。他们监控的页面加载时间是 document.complete,也就是 window.onload
    • 仅供参考:现代浏览器有时具有不同的 max-connections-per-server 设置。它通常不再只是 2 了。但大多数(现在)不默认超过 8 个。
    【解决方案4】:

    我们在结果中显示 40 张图片。

    第一个问题,这个页面是登陆页面吗?它是针对特定关键字的吗?内部搜索结果页面不会自动登陆页面。如果它们不是着陆页,那么对它们做任何你想做的事情(并确保它们不会被谷歌索引)。

    如果它们是登录页面(针对特定关键字的页面),则网站的性能确实很重要,对于这些页面的转化率以及间接(在较小范围内也直接)对于谷歌也是如此。因此,对于包含大量图像的页面,一种延迟加载逻辑是个好主意。

    我会去:

    以 SEO 优化的方式加载前两个(产品?)图像(作为普通 HTML,带有目标替代文本和目标文件名)。对于其余的图像进行延迟加载逻辑。但不仅仅是将 src= 设置为空白,而是将整个 img 标签 onload(或 onscroll 或其他)插入到您的代码中。

    对于非 javacript 用户(即:google、旧移动设备、textviewer)在 HTML 中有很多损坏的 img 标签不是一个好主意(只要延迟加载的图像没有误导,你就不会受到惩罚) 但糟糕的标记绝不是一个好主意。

    一般SEO问题请访问https://webmasters.stackexchange.com/(堆栈溢出更多用于编程相关问题)

    【讨论】:

      【解决方案5】:

      我不得不不同意亚历克斯。谷歌最近更新了它的算法来考虑页面加载时间。根据谷歌官方博客

      ...今天,我们在搜索排名算法中加入了一个新信号:网站速度。网站速度反映了网站响应网络请求的速度。

      但是,请务必记住,SEO 最重要的方面是原创、优质的内容。

      http://googlewebmastercentral.blogspot.com/2010/04/using-site-speed-in-web-search-ranking.html

      【讨论】:

      • 是的,正因为如此,我特别希望优化页面加载时间 (window.onload)。我想知道这种方法是否会被谷歌描述为“作弊”或“无效”,因为他们希望图像内容有助于他们测量的页面加载时间。我希望通过延迟加载来确定内容优先级的方法,无论是脚本、图像,甚至是 html 片段都将被认为是有效的,但还有一个问题,即最初为空的 img.src 值是否会影响谷歌索引页面的方式。也许谷歌会忽略我图片中的替代文字。
      【解决方案6】:

      我的网站 (http://www.amphorashoes.ro) 添加了延迟加载功能,并且我从 google 获得了更好的 pagerank(可能是因为内容加载速度更快):)

      【讨论】:

      • 通过 Google 工具栏衡量的页面排名,还是在搜索结果中的更好排名?
      【解决方案7】:

      首先,不要使用 src="",它可能会搜索你的页面,制作一个小的加载图像来代替它。 其次,我认为它不会影响搜索引擎优化,实际上我们总是使用 alt="imgDesc.." 来描述这张图片,蜘蛛可能会捕捉到这个 alt 但不会分析这张图片的真实身份。

      【讨论】:

        【解决方案8】:

        我发现this tweet关于谷歌的搜索引擎优化

        有多种方法可以延迟加载图像,这当然值得 思考标记如何用于图像搜索索引 (有些工作正常,有些则不行)。我们正在考虑使一些更清晰 推荐。

        12:24 上午 - 2018 年 2 月 28 日

        John Mueller - 高级网站管理员趋势分析师

        据我了解,这似乎取决于您如何实现延迟加载。而且 Google 尚未推荐一种对 SEO 友好的方法。

        理论上,Google 应该在网站上运行脚本,因此延迟加载应该没问题。但是,我找不到证实这一点的来源(来自 Google)。

        所以看起来抓取延迟加载或延迟的图像可能还不能完全证明。这是我写的一篇关于lazy loading image deferring and seo 的文章,详细讨论了它。

        这是我编写的工作库,主要关注 lazy loading or deferring images in an SEO friendly way

        它的主要作用是在 DOM 准备好时取消图像加载,并在窗口加载事件后继续加载图像。

        ...
          <div>My last DOM element</div>
          <script>
            (function() {
              // remove the all sources!
            })();
        
            window.addEventListener("load", function() {
               // return all the sources!
            }, false);
          </script>
        </body>

        您可以通过删除图像的src 值或将其替换为占位符图像来取消图像的加载。您可以使用Google Fetch 测试此方法 在 DOM 准备好之前,您必须确保拥有正确的 src,以确保 Google Fetch 将捕获您的 imgs 原始 src

        【讨论】:

        • 你应该把答案放在 Stack Overflow 上,而不是在你写的文章中。可以引用你的文章;事实上,当你引用你的来源时,这很好。
        • @jww 我已经更新了答案以包含核心概念。
        猜你喜欢
        • 2011-01-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-11
        • 2011-03-15
        • 1970-01-01
        • 2012-09-18
        相关资源
        最近更新 更多