【问题标题】:Will using Lazy Loading make my webpage appear quicker使用延迟加载会让我的网页看起来更快吗
【发布时间】:2014-11-28 21:42:57
【问题描述】:

我正在创建一个网页,其中包含 120 个项目(图像 + 描述 + 链接),每个项目都显示在一个固定大小的 div 中。

如果我在 HTML 中只包含 30 个项目,用空白(固定大小的 div)代替其他 90 个项目,并在用户向下滚动页面时加载其他 div 的内容,页面会呈现更快吗?

我认为这种延迟加载的可能优势可能是:

  • HTML 文件小于原始大小的 50%(但是,这可能不会影响加载速度,因为我希望浏览器在加载后立即显示最顶部的元素)

    李>
  • 前 30 张图片加载速度更快,因为它们不会与其他 90 张图片竞争。

这些假设是否有效?页面渲染会更快吗?还有什么相关的? (例如,最初的 DOM 元素较少、JavaScript 开销等)

【问题讨论】:

  • "前 30 个图像加载速度更快,因为它们不会与其他 90 个竞争" 我认为大多数浏览器中并发连接的浏览器限制为 6,因此您所有的图像都在争夺这 6 个插槽。
  • ...应该读作“在大多数浏览器中并发连接到单个主机的浏览器限制是6”

标签: javascript html css performance web


【解决方案1】:

嗯,是的,不是的……

由于文档大小较小,页面可能会稍早开始呈现,并且由于元素较少,呈现页面的时间可能会稍短一些,但这些都不太可能引起注意。

图片加载速度不会更快,因为页面上的图片较少。来自同一主机的同时加载数量仍然远低于您最初计划加载的 30 个图像。图片通常会从顶部开始加载,因此对于顶部图片,您不会注意到任何页面下方的缺失图片有任何区别。

相关的是浏览器必须加载和运行多少才能开始呈现实际页面。例如,在页面头部加载的任何 Javascript 文件都必须先加载并运行,然后浏览器才能呈现任何内容。

【讨论】:

  • 关于图像的好点,我将使用 robohash 图像进行测试,看看它们是否似乎按顺序加载。延迟加载的 JS 可以放在 的底部(或从外部文件延迟加载)。这留下了“页面可能会更早地开始呈现”。你能建议这可能是什么时间顺序吗?甚至毫秒似乎对页面加载时间很重要:stackoverflow.com/questions/14510499/…
  • 这是一个加载 120 个唯一图像的测试(这些图像在打开链接时似乎按顺序加载,但如果在 Firefox v33 的新标签页中打开链接,则奇怪地加载无序!) :web-c7e36bb1-c9f9-4fc7-95da-01d647d073c3.runnable.com
  • @PaulS:您也许可以减少一些加载时间,但这是否足以产生影响取决于您的情况。作为比较;常规屏幕 (60 Hz) 大约每 17 毫秒更新一次,因此甚至无法看到比这更小的变化。
【解决方案2】:

我会说页面渲染得更快,并且使用起来感觉更快。

但是您可以尝试其他方法:

  • 我想您一开始就优化了图像?
  • 如果有一个“上一个”页面,您可以在后台预加载图像,以便在用户访问此页面时它们已经被缓存?
  • 也许您可以将所有图像组合成一张大图像(单个 http 请求)并使用 CSS 分别剪切/定位它们

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多