我应该和不应该在javascript中缓存什么?

时间:2012-05-03 18:15:50

标签: javascript caching

我知道缓存将多次使用的对象是个好主意。但是,如果我将多次使用以下内容呢?

var chacheWindow = window;
var chacheDocument = document;
var chacheNavigator = navigator;
var chacheScreen = screen;
var chacheWindowLocationHash = window.location.hash;
var chacheDocumentBody = document.body;

也许在<html></html>之间追逐东西只是好事?请解释一下。

3 个答案:

答案 0 :(得分:6)

缓存的目的是避免:

重复输入长名称

你的每一个例子都有一个比原版更长的名字,所以你没有得到这个好处

避免重复进行昂贵的操作(或稍微昂贵的操作,例如array.length循环之前的for,非常多次)

没有迹象表明你正在获得这种好处。

您可能根本不应该复制对局部变量的引用。

答案 1 :(得分:2)

很难准确说出应该缓存的内容。

我不会缓存原生全局对象或可能发生变化的事物。您在示例中所做的只是创建对同一对象的另一个引用。

应该缓存对DOM元素的引用,否则你将花费时间再次搜索它们。此外,还可以缓存重做操作的结果

您可以使用一些分析器并查看不同功能的性能,以获得应该缓存的内容的提示。

答案 2 :(得分:1)

缓存是一把双刃剑。如果你有一些计算密集的价值或需要往返服务器,那么缓存就是一个很好的主意。对于您在问题中指定的几乎所有值,您不会自己购买任何东西。您只是将一个变量引用替换为另一个变量引用。

一般来说,在这些微观优化中陷入困境并不是一个好主意。优化和改进性能是好的,但是你花费的时间通常更好地寻找那个做太多工作的循环或修复不好的算法而不是处理这种类型的情况,如果有任何改进,你只是看一个最多只能提高纳秒 - 但是对于你提到的值,你会看到绝对没有任何改进。