0

如果我将数据保存在 global 中,可能会出现什么潜在问题var cache = {}

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

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

谢谢。

4

2 回答 2

3

听起来您需要了解javascript中全局数据的生命周期:

  1. 在给定页面的生命周期中,全局变量会一直持续到您清除它的值为止。它永远不会被垃圾收集。因为它是全球性的,所以它永远不会超出范围。

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

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

于 2012-08-07T06:17:57.213 回答
1

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

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

于 2012-08-07T06:12:08.443 回答