2012-08-07 48 views
0

如果我将数据保存在全局var cache = {}中,可能会出现什么问题?javascript中的简单缓存

它会被垃圾收集器收集吗? 我可以确保它一直持续到观看结束吗?

是否有浏览器内置的功能,我甚至可以在下次打开页面时使用,我已经准备好了缓存数据?

谢谢。

+1

全局变量永远不会被GC收集,因为它们是全局变量 – zerkms 2012-08-07 06:08:40

回答

3

这听起来像你需要了解在JavaScript全局数据的生命周期:

  1. 特定页面的生命周期中,一个全局变量持续,直到你清楚它的价值。它永远不会被垃圾收集。因为它是全球性的,它永远不会超出范围。

  2. 当查看器转到该窗口中的新页面或关闭该浏览器窗口时,该先前页面的所有javsacript数据都将被释放并不再可用。

  3. 有三种方法可以保存数据,以便将来可以在该页面或其他页面中使用:1)Cookie,2)本地存储,3)服务器存储。在所有这些情况下,数据必须从其存储位置检索并放回到JavaScript中。

1

只要页面保持打开状态,变量就会存在。关闭后(或远离),它将被垃圾收集。

如果有很多缓存中的小数据,您可以序列化它并将其存储为cookie。对于大量的数据,DOM Storage可能很有用,但在浏览器中并不普遍支持。

+2

http://diveintohtml5.info/storage.html – 2012-08-07 06:19:51