Bun*_*gle 6 javascript dom lazy-loading
我一直在研究一些 JavaScript 代码,在某些条件下,这些代码会延迟加载几个不同的库(Clicky Web Analytics和Sizzle选择器引擎)。
该脚本每天下载数百万次,因此性能优化是一个主要问题。迄今为止,我已经使用了几个标志,例如script_loading并script_loaded尝试确保我不会多次加载任何一个库(通过“加载”,我的意思是在页面加载后通过将<script>元素插入到 DOM 中来请求脚本) .
我的问题是:与其依赖这些在我的代码中变得有点笨拙且难以理解的标志(想想回调和异步代码的所有陷阱),它是否跨浏览器安全(即回到 IE 6 ) 并且<script>在我到达需要这些库之一的代码分支时只调用一个简单的函数来插入元素不会对性能有害?
后者仍将确保我仅在需要时加载任一库,并且还将简化和减轻我的代码库的重量,但我需要绝对确保这不会导致额外的、不必要的浏览器请求。
我的预感是<script>多次附加元素不会有害,因为我认为浏览器应该识别重复的srcURL 并依赖本地缓存副本。但是,你知道当我们假设......
我希望有人足够熟悉各种现代(和不那么现代,例如 IE 6)浏览器的行为,以便能够说明在这种情况下会发生什么。
与此同时,我会写一个测试来尝试直接回答这个问题。我的犹豫只是在我的脚本预期支持的每个浏览器中肯定地验证这可能是困难和繁琐的。
提前感谢您的任何帮助和/或输入!
找到了替代解决方案。
当您在 DOM 中插入新的脚本元素时,您是否不能快速扫描现有脚本元素以查看是否存在另一个具有相同 src 的脚本元素?如果有的话,不插入另一个吗?
同一页面上的 JavaScript 代码无法多线程运行,因此您不会在其中出现任何竞争条件或其他任何情况。
否则,您只是依赖当前浏览器(和 HTTP 代理)的缓存行为。
| 归档时间: | 
 | 
| 查看次数: | 2439 次 | 
| 最近记录: |