Javascript 性能<;脚本>;Vs eval()
我正在做一个很大的水疗中心。精简后的javascript代码超过1MB。有一个相当复杂的缓存机制来减少用户必须进行的下载量,但在基本级别上,它的工作原理如下: 当用户第一次访问该站点时,javascript将被下载并作为字符串保存到浏览器本地存储中。当用户稍后返回时,将从本地存储中检索字符串,并使用eval()进行计算 我的问题是:向DOM添加包含javascript字符串的脚本标记会更快吗?还是eval()更快?还是真的没有区别 我已经尝试了这两种方法,使用脚本标记似乎更快,但由于我们处理的时间大约为100毫秒,我不能仅仅通过观察它的加载来确定Javascript 性能<;脚本>;Vs eval(),javascript,performance,Javascript,Performance,我正在做一个很大的水疗中心。精简后的javascript代码超过1MB。有一个相当复杂的缓存机制来减少用户必须进行的下载量,但在基本级别上,它的工作原理如下: 当用户第一次访问该站点时,javascript将被下载并作为字符串保存到浏览器本地存储中。当用户稍后返回时,将从本地存储中检索字符串,并使用eval()进行计算 我的问题是:向DOM添加包含javascript字符串的脚本标记会更快吗?还是eval()更快?还是真的没有区别 我已经尝试了这两种方法,使用脚本标记似乎更快,但由于我们处理的时
对于哪种方法更快,是否有明确的答案?如果不是,那么最好的测量方法是什么?在计算脚本并调用javascript字符串最后一行中的console.timeEnd()之前,我已经尝试调用console.time()。这是最好的方法吗?脚本标记方法在这里似乎也更快,但我不确定这是否是一个有效的测试。因为这是一个大型应用程序,使用eval是个坏主意,为什么不使用健全的HTTP缓存头并让浏览器完成它应该做的工作?不要使用
localStorage
编写自己的缓存机制!您是document.write
ing脚本还是使用DOM方法?在任何情况下,eval
都要简单得多,并且具有更一致的跨浏览器行为。与脚本标记方法相比,我更喜欢这种方法。在本地存储中存储js文件是一种糟糕的做法。若用户访问了您的站点,而您进行了部署,则更改不会反映出来。我建议您将js拆分为模块,并动态加载这些模块。@Keith:应该没有任何区别。我猜eval
更快,因为它不涉及DOM,但差异应该可以忽略不计。在任何情况下,此决定都不会对页面加载速度产生任何影响。