javascript - 在javascript中缓存

标签 javascript

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

  1. 是受javascript限制,还是受浏览器限制? (是定数还是变数?)

  2. 如果达到或超过限制怎么办?浏览器是否崩溃,或者 javascript 抛出错误?

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

例如:

 function afterAjaxResponse(responseText) {
     cache[ajaxIdentifier]=responseText;
 }

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

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

必须有一个限制,但很高兴知道该限制是来自 javascript 还是浏览器,以及我是否可以通过某种方式检查是否达到了该限制,从而相应地解决问题。

最佳答案

我能想到的唯一硬限制是数组大小,它在 ECMAScript 标准中定义为最大值 that can be represented in an unsigned 32bit integer (via ToUint32) :

ToUint32: (Unsigned 32 Bit Integer)

The abstract operation ToUint32 converts its argument to one of 2^32 integer values in the range 0 through 2^32−1, inclusive.

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

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

关于javascript - 在javascript中缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30276395/

相关文章:

javascript - 崩溃转储丢失的 nodewebkit

javascript - GoJS:如何更改节点填充颜色?

Javascript 鼠标悬停事件 Acting Squirrely

javascript - 如何在不将所有其他元素 z-index 变为负数的情况下使用 z-index 时使链接可点击?

Javascript FileReader 在读取本地镜像时占用所有内存

javascript - 如何在 JavaScript 中检查哪个单选按钮被选中?

javascript - 匹配具有可选端口的域/url 字符串,例如 : www. ex-ample.com:32000

javascript - 在 underscore.js 中使用 memoize 函数

javascript - 变量范围(module.exports + socket.io 设置)

javascript - 使用被调用者参数列表的尾部调用函数