在javascript中缓存

Ada*_*yai 7 javascript

我可以在javascript变量中存储的数据量是否有限制?如是:

  1. 是受限于JavaScript还是浏览器?(它是固定数字还是可变数字?)

  2. 如果达到或超过限制怎么办?浏览器崩溃,或javascript引发错误?

如果我正在对不同的页面进行大量的ajax调用,并且我希望将这些ajax调用的结果存储在javascript中的全局变量中以供将来使用(以释放对服务器的查询量,并加快响应速度)用户获得),是否保证我的数据将存储在此变量中?

例如:

 function afterAjaxResponse(responseText) {
     cache[ajaxIdentifier]=responseText;
 }
Run Code Online (Sandbox Code Playgroud)

我可以在"缓存"对象中存储多少数据?如果是,我可以以某种方式检查要存储的数据是否仍然适合它,如果没有,可以释放缓存吗?(例如使用try/catch)

编辑:可能的重复不回答我的问题,因为我想知道javascript对象的限制,而不是字符串,它也没有回答达到限制时发生的事情.

必须有一个限制,但很高兴知道,如果该限制来自javascript或浏览器,并且如果我能以某种方式检查是否达到该限制,则相应地解决问题.

Umb*_*ndi 1

我能想到的查看示例的唯一硬限制是数组大小,它在 ECMAScript 标准中定义为可以用无符号 32 位整数表示的最大值(通过 ToUint32) :

\n\n
\n

ToUint32:(无符号 32 位整数)

\n\n

抽象操作 ToUint32 将其参数转换为 0 到 2^32\xe2\x88\x921(含)范围内的 2^32\n 整数值之一。

\n
\n\n

除了可用于分配的内存之外,通用变量本身不存在其他限制,如果您有足够的内存,则将存储该变量,如果没有,则不会(我猜它不会优雅地失败)。

\n\n

您无法知道分配期间是否出现问题,最好的方法是事先决定缓存将使用的最大内存量并坚持该最大大小(限制数组大小或使用循环数组,考虑到它\ '一个缓存)。

\n