我可以在 javascript 变量中存储的数据量是否有限制?如果是:
是受javascript限制,还是受浏览器限制? (是定数还是变数?)
如果达到或超过限制怎么办?浏览器是否崩溃,或者 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/