首页 > 解决方案 > 浏览器在单个会话中存储下载的资产多长时间

问题描述

我想从服务器预加载数据,以便在我调用它时立即可用。数据存储在一个名为“data.json”的文件中。

起初,我想保存data.json到一个对象并在需要时引用它。

但是,根据用户的操作,在我需要此对象存储的数据之前可能需要一段时间。因此,由于对象很大(约 5 mb),因此内存管理变得有点令人担忧。

我的问题是,当我data.json通过 ajax 调用时,浏览器是否在网站会话期间内部“缓存”此文件。

意思是,如果我在已经调用文件之后再次通过 ajax 调用文件,浏览器会立即从自己的内存中获取文件,而不是返回服务器?

如果是这样,在 JavaScript 中保存该文件的额外副本似乎是一种浪费。但是,我在网上找不到任何关于此的信息/标准。

所以简而言之,我需要将下载的文件保存到一个对象吗?或者让浏览器在内部处理它是否安全?

标签: javascriptjsonajax

解决方案


这里有几种不同类型的“缓存”。听起来您在问“浏览器的 JavaScript 引擎将对象在内存中保留多长时间”,而答案是“只要有对它的引用”。

另一方面,浏览器的 (HTTP) 缓存寿命更长;一个条目可能存在几天、几周或几年,具体取决于可用空间、响应上的新鲜度标题等。

对于您所描述的场景,您可能希望将 JSON 预取到本地缓存文件,然后仅根据需要将该缓存文件加载到 JavaScript 中。


推荐阅读