我正在使用lazyload.js来延迟加载几个脚本。现在我正在考虑只使用一个站点范围的包含,它告诉lazyload.js 加载我站点上使用的所有脚本。然后我可以让浏览器决定这些脚本中的任何一个是否已经在缓存中(并在必要时加载它们)。
这使我不必在 js 中测试是否已经加载了某些东西(而且我愿意接受发出几个额外请求的开销)。它会那样工作,还是我忽略了什么?
我正在使用lazyload.js来延迟加载几个脚本。现在我正在考虑只使用一个站点范围的包含,它告诉lazyload.js 加载我站点上使用的所有脚本。然后我可以让浏览器决定这些脚本中的任何一个是否已经在缓存中(并在必要时加载它们)。
这使我不必在 js 中测试是否已经加载了某些东西(而且我愿意接受发出几个额外请求的开销)。它会那样工作,还是我忽略了什么?
我不是基于硬数据,但我认为可以肯定地说,当今使用的大约 75~80% 的浏览器在缓存脚本方面做得很好。AFAIK,有一些方法可以强制浏览器不使用缓存的脚本,但看到这不是你想要的,没关系。
是的,事实上,大多数浏览器都会引用 cahced 脚本,而不是一遍又一遍地请求文件。当然,有些人担心他们的隐私,只会以匿名/隐身模式(又名色情模式)浏览网页。
这会导致浏览器在关闭浏览器窗口时清除缓存。
你为什么要关心?好吧,我认为这在开发我的 JS 脚本时非常有用。
硬刷新类似于ctrl+ c。我们都养成了按这两个键 4 到 5 次的习惯,只是为了确定。我注意到我的同事也用ctrl+做同样的事情F5......
延迟加载并不总是与带宽保存有关,它还与 CPU/电池保存有很大关系。如果您延迟加载某些内容,无论是否在浏览器缓存中,您都是在需要时加载它,因此不会浪费执行从未使用过的代码。如果您预先加载所有内容,则每次访问页面都会产生固定的 CPU 和电池成本,无论是否使用了 80% 的模块。
为了节省移动设备的电池寿命,您最好采用适当的延迟加载方法。但是对于台式机,最好预加载所有内容,因为预加载成本相对较小。
我已经看到它按照您解释的方式工作,但我看到它不起作用。但是,也很少出现双重负载,这会使开销更大。
简而言之:这取决于
如果脚本存在于缓存中,浏览器很可能不会请求该脚本,除非明确指定。
但是,是否请求脚本完全取决于浏览器的判断。
不,这行不通。
如果您告诉lazyload 加载脚本,那么它会加载脚本。Lazyload 无法访问浏览器缓存,并且无法确定某些资源是否在缓存中。此外,脚本加载顺序很重要,因此如果未加载以前的 javascript 文件,浏览器将无法使用 javascript 文件。浏览器可以确定 javascript 文件是否相互依赖。
如果您正在考虑通过延迟加载创建“全部加载”:最好只创建一个 JavaScript 文件并将其加载到页面末尾。