Firefox 减少CSS和本地存储问题

Firefox 减少CSS和本地存储问题,firefox,local-storage,less,Firefox,Local Storage,Less,我使用更少的CSS(更确切地说是更少的.js),这似乎是在暗中利用本地存储。我以前在本地运行我的应用程序时从未见过这样的错误,但现在我在每个页面显示时都会看到“已达到持久存储最大大小”,就在我的应用程序的唯一.less文件链接上方 到目前为止,这只发生在Firefox12.0上 有什么办法解决这个问题吗 附言:主要是受启发,这就是我最后所做的(这是基于原型的,依赖于一个定制的普通日志类,但这应该很容易适应您的上下文): “严格使用”; var LocalStorageChecker=Class.

我使用更少的CSS(更确切地说是更少的.js),这似乎是在暗中利用本地存储。我以前在本地运行我的应用程序时从未见过这样的错误,但现在我在每个页面显示时都会看到“已达到持久存储最大大小”,就在我的应用程序的唯一.less文件链接上方

到目前为止,这只发生在Firefox12.0上

有什么办法解决这个问题吗

附言:主要是受启发,这就是我最后所做的(这是基于原型的,依赖于一个定制的普通日志类,但这应该很容易适应您的上下文):

“严格使用”;
var LocalStorageChecker=Class.create({
testDummyKey:“\uuuuDummy\uData\uuKey”,
最大迭代次数:100,
记录器:新记录器(“LocalStorageChecker”),
分析存储:函数(){
var结果=假;
if(modernizer.localstorage&&this.\u isLimitReached()){
这个;
}
返回结果;
},
_isLimitReached:函数(){
var localStorage=window.localStorage;
var计数=0;
var limitIsReached=假;
做{
试一试{
var previousEntry=localStorage.getItem(this.testDummyKey);
变量项=(previousEntry==null?“:previousEntry)+m”;
setItem(this.testDummyKey,条目);
}
捕获(e){
this.logger.debug(“在“+count+”迭代之后超出限制”);
limitIsReached=真;
}
}
而(!limitIsReached&&count++

p.p.S.:我还没有测量对UI的性能影响,但是可以创建一个装饰器,并且只每隔X分钟执行一次存储测试(例如,最后一次在本地存储中执行的时间戳)

这里有一个很好的资源,可以用来查找您遇到的错误


让您了解到localstorage只有这么多空间,您可以在每个浏览器中最大限度地利用它。考虑从本地存储中删除一些数据以解决您的问题。

Less.js持久缓存@imported的内容。可以使用此脚本清除缓存的内容。使用下面的脚本,您可以调用函数destroyLessCache('/path/to/css/'),它将清除缓存的css文件的本地存储

    function destroyLessCache(pathToCss) { // e.g. '/css/' or '/stylesheets/'
       if (!window.localStorage || !less || less.env !== 'development') {
            return;
       }
       var host = window.location.host;
       var protocol = window.location.protocol;
       var keyPrefix = protocol + '//' + host + pathToCss;
       for (var key in window.localStorage) {
          if (key.indexOf(keyPrefix) === 0) {
             delete window.localStorage[key];
          }
       }
    }
    function destroyLessCache(pathToCss) { // e.g. '/css/' or '/stylesheets/'
       if (!window.localStorage || !less || less.env !== 'development') {
            return;
       }
       var host = window.location.host;
       var protocol = window.location.protocol;
       var keyPrefix = protocol + '//' + host + pathToCss;
       for (var key in window.localStorage) {
          if (key.indexOf(keyPrefix) === 0) {
             delete window.localStorage[key];
          }
       }
    }