如果我将数据保存在全局var cache = {}
?
它会被垃圾收集器收集吗? 我可以确保它一直持续到观看结束吗?
我是否可以使用浏览器内置功能,所以即使下次打开页面我也准备好了缓存数据?
感谢。
答案 0 :(得分:3)
听起来你需要了解javascript中的全局数据的生命周期:
在给定页面的生命周期内,全局变量会持续到您清除它的值为止。它永远不会被垃圾收集。因为它是全球性的,所以永远不会超出范围。
当观众转到该窗口中的新页面或关闭该浏览器窗口时,该上一页的所有javsacript数据都将被释放并且不再可用。
有三种方法可以保留数据,因此可以在该页面或其他页面的未来视图中使用:1)Cookie,2)本地存储,3)服务器存储。在所有这些情况下,必须从其存储位置检索数据并将其放回到javascript中。
答案 1 :(得分:1)
只要页面保持打开状态,变量就会存在。关闭(或导航离开)之后,它将被垃圾收集。
如果缓存中有非常的小数据,您可以将其序列化并将其存储为cookie。对于大量数据,DOM存储可能很有用,但浏览器并不普遍支持。