如果脚本已经在浏览器缓存中,浏览器是否仍会延迟加载脚本?

时间:2013-08-12 09:28:08

标签: javascript html caching lazy-loading

我正在使用lazyload.js延迟加载多个脚本。现在我只想使用一个站点范围的include,告诉lazyload.js加载我站点上使用的所有脚本。然后我可以让浏览器决定这些脚本中是否有任何已经存在于缓存中(并在必要时加载它们)。

这使我免于必须在js中进行测试是否已经加载了某些内容(并且我愿意接受正在进行的一些额外请求的开销)。 它会以这种方式工作,还是我忽略了什么?

6 个答案:

答案 0 :(得分:3)

我不是基于硬数字,但我认为可以肯定地说,今天使用的大约75%到80%的浏览器在缓存脚本方面做得非常好。 AFAIK,有一些方法可以强制浏览器使用缓存的脚本,但是看到这不是你想要的,这无关紧要。

是的,实际上,大多数浏览器都会引用cahced脚本,而不是一遍又一遍地请求文件。当然,some people are concerned about their privacy,只会以匿名/隐身模式(又称色情模式)浏览网页。
这会导致浏览器在浏览器窗口关闭时清除缓存 你为什么要关心?好吧,我是一个,在开发我的JS脚本时发现它非常有用 硬刷是类似 ctrl + c 。为了确保这一点,我们已经成长了将这两个键按下4~5次的习惯。我注意到我的同事也用 ctrl + F5 做同样的事情......

答案 1 :(得分:1)

我看到它按你解释的方式工作,我发现它不起作用。但是,也很少出现双重负载,这会使开销更大。

答案 2 :(得分:1)

简而言之:取决于

如果脚本存在于缓存中,除非明确指定,否则浏览器很可能不会请求脚本。

但是,完全取决于浏览器是否可以自行决定是否请求脚本..

答案 3 :(得分:1)

延迟加载并不总是关于带宽保存,它还与CPU /电池保存有很大关系。如果您懒惰加载某些内容,无论是否在浏览器缓存中,您都会在需要时加载它,因此不会浪费地执行从未使用过的代码。如果您预先加载所有内容,每次访问页面时都会有固定的CPU和电池成本,无论是否使用了80%的模块。

为了节省移动设备的电池寿命,最好采用适当的延迟加载方法。但是对于台式机,你最好预先加载所有东西,因为预加载成本相对较小。

答案 4 :(得分:1)

缓存控制怎么样?

<meta http-equiv="cache-control" content="no-cache">

也许这对你来说是正确的。 查看here了解更多信息。

答案 5 :(得分:0)

不,它不起作用。

如果告诉lazyload加载脚本,那么它会加载脚本。 Lazyload无法访问浏览器缓存,无法确定某些资源是否在缓存中。 此外,脚本加载顺序很重要,因此如果未加载以前的javascript文件,则浏览器无法使用javascript文件。浏览器可以确定javascript文件是否相互依赖。

如果您考虑通过lazyload创建“load all”: 最好只创建一个JavaScript文件并在页面末尾加载它。