Javascript 如何应对Web存储的大小限制?

Javascript 如何应对Web存储的大小限制?,javascript,exception,cross-browser,Javascript,Exception,Cross Browser,W3C Web存储规范(俗称HTML5本地存储,尽管这是一个误称)允许用户代理强制执行大小限制,建议为5MB。根据我在网上找到的各种来源,很多现代浏览器都使用这个5MB的限制,除了IE提供10MB的限制 首先,我想知道,这个限制是适用于本地存储和会话存储的总和,还是分别适用于它们 现在,我们如何应对这些限制?有没有办法找出特定浏览器的限制?是否有网站维护不同浏览器的统计数据?浏览器超出限制时是否引发异常?是否有一种简单的方法可以在不同的浏览器中测试此异常“类”?好的,在localStorage对

W3C Web存储规范(俗称HTML5本地存储,尽管这是一个误称)允许用户代理强制执行大小限制,建议为5MB。根据我在网上找到的各种来源,很多现代浏览器都使用这个5MB的限制,除了IE提供10MB的限制

首先,我想知道,这个限制是适用于本地存储和会话存储的总和,还是分别适用于它们


现在,我们如何应对这些限制?有没有办法找出特定浏览器的限制?是否有网站维护不同浏览器的统计数据?浏览器超出限制时是否引发异常?是否有一种简单的方法可以在不同的浏览器中测试此异常“类”?

好的,在
localStorage
对象中没有方法来确定其大小。但是,尝试写入超过存储限制的数据量将导致您可以捕获的异常

看看

基本上,您可以将写入函数包装在一个
try…catch
块中,如下所示:

function write(value, name) {
    try {
        localStorage.field = value;
        return true;
    } catch (e) {
        return false;
    }
}

嗨,是的,我确实在那个网站上看到了这个例子,自从我的帖子发布后,我注意到它捕捉到了一个异常。然而,我想知道是否有一种方法可以测试异常的形式是否正确?例如,在我的浏览器(Firefox)中,异常名称是“NS\u ERROR\u DOM\u QUOTA\u reach”,但我认为这是Firefox特有的。我认为应该有一些图书馆来处理这类事情!!另外,对于该站点,不清楚配额是同时用于本地存储和会话存储,还是仅用于其中一个…您找到了一个好答案吗?不,不太清楚。更糟糕的是,有一个主要的浏览器(我忘了是哪一个),如果网站试图超过存储限制,它会显示一个对话框。web开发人员无法自定义此消息,因此它只会说“此网站正试图超出其存储限制”,这是一种非常糟糕的用户体验。因此,我的公司决定不对我们的用例使用本地存储,只使用默认的浏览器缓存机制,而使用“看起来像”的URLjavascript文件,但实际上只包含动态生成的对象定义。我编写了一个模块,负责与localStorage进行通信,这样它就不会超过允许的最大值,如果超过4mb,它会清空它拥有的最早的条目,直到低于3mb。此外,每次系统添加或删除时,每次使用的字节数量都会更新,这意味着您可以使用seek time big-o 1获取当前使用的字节数量。