gpt4 book ai didi

javascript - 如何强制浏览器在前6个并行连接中预取图像

转载 作者:行者123 更新时间:2023-12-03 07:19:25 24 4
gpt4 key购买 nike

我发现了很多技术可以同时使用CSS和JS预加载图像,但是没有一种方法能够真正按照我需要的方式或更具体地按我的顺序预加载图像。

简而言之,浏览器会将所有图像和内容预加载到一个块中,但是的顺序(浏览器将下载每个图像的顺序)完全由他自己计算,大部分(且完全合理)文档中最上面的元素将首先下载。

不幸的是,这在我仅使用<img>元素的测试中是完全正确的。对于具有背景图像之类的其他元素,实际上并不是那样,即使这些图像用作<body>元素的背景。

到目前为止,唯一可行的解​​决方案是将一些<img>元素放在<body>标记之后,并使用style="display:none"进行设置。 这是可行的,,但是imo很难实现这一目标。

我还对SEO有点担心,因为bot会在文档的开头找到一些隐藏的图像,仅用于此目的(我主要是为预加载器效果预加载图像,例如带有小徽标图像的“loading ..”)。 。

我看到了一个超棒的解决方案,这让我很着迷,我看到它像body:before这样在人体上预装了一个伪元素,然后使用了多个背景图像。虽然这项技术确实可以预加载,但不会影响加载顺序的优先级……非常遗憾,它是如此完美! :(

难道真的没有其他方法可以强制将优先级最高的东西预加载到 Assets 的其余部分上,而不用隐藏的图像使文档顶部困惑吗?

更新

正如我在下面的评论中所解释的,我不关心按特定顺序加载图像,而是希望在“下载”图表中的大部分 Assets 和其他项目之前下载它们,以便图像访问该页面时,它将几乎立即在浏览器中呈现,并且具有正常的CSS布局呈现。

更新2

更多信息:“预加载”一词的确是误导,对于我正在寻找的更接近的术语可以是“预取”,但基本上它是这样的:

大多数浏览器一次并行下载6个请求,而其余的则保持下来。如果您真正需要的是前6名,那么您很幸运,否则将是前6名,或者之后的一位,依此类推。

我想做的是找到一种正确的方法来告诉“嘿,请先下载此图片”,尤其是“此图片”。
正如@farkas在下面的答案中指出的rel="subresource"确实是一个不错的开始,但正如here所指出的,它主要是因为[[..]建议下载它的优先级实际上低于样式表/脚本和字体,但等于或高于优先级高于图片”,因此它的确比其他很多东西要优先加载,但仍然没有适当的方法来突破这6个金牌榜首。

net chart download

如您所见,浏览器首先下载样式,然后我需要尽快加载图像中的1种,然后是脚本,而忽略了我需要优先下载的其他2张图像。

需要注意的是,我没有将所有脚本放置在头部,而是将所有脚本都放置在结束</body>之前的底部,并且(如我的问题所述),我在开始后将图像标记为正确<body>标签,但只有dark-pattern.jpg已先下载,其他2个已推迟

...
</head>
<body>
<img src="dark-pattern.jpg" style="display:none">
<img src="preloader.jpg" style="display:none">
<img src="xs-style.png" style="display:none">

.. rest of code
...

我想知道一种正确的说法,“请为我的照片留点,只需下载阶梯,脚本便会在以后出现”。

有可能实现这一目标吗?

我也在这里找到了关于此问题的更多详细信息,但是除了 rel="subresource"之外,我的具体请求没有任何内容
  • http://www.stevesouders.com/blog/2008/03/20/roundup-on-parallel-connections/
  • http://sgdev-blog.blogspot.it/2014/01/maximum-concurrent-connection-to-same.html
  • http://andydavies.me/blog/2013/10/22/how-the-browser-pre-loader-makes-pages-load-faster/

  • PS。如果所有东西都具有特定的技术名称,请告诉我,以便最终为野兽起一个名字,谢谢:P

    最佳答案

    使用CSS或JS加载图像的速度总是比使用HTML加载的速度慢。这是由于CSS和JS在HTML之后加载和解析的事实。除此之外,浏览器还使用speculative preload parser对此进行了优化。

    因此,如果您的图像已经是HTML格式,则可以为这些图像添加预加载脚本,而不会重新排列img下载的顺序。

    因此,您基本上有两个选择:

  • 通过在顶部添加图像(使用隐藏的img或使用 link rel="subresource" (Chrome only)
  • )尽快加载图像
  • 延迟加载所有其他non-crucial assets using a lazyloader
  • 关于javascript - 如何强制浏览器在前6个并行连接中预取图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30228742/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com