私は、内部でLocalStorageを悪用しているように見えるLESS CSS(より正確にはless.js)を使用しています。アプリをローカルで実行しているときにこのようなエラーが発生したことはありませんでしたが、アプリの一意の.lessファイルのリンクのすぐ上にあるすべてのページ表示で「永続ストレージの最大サイズに達しました」と表示されます。
これは、これまでのところFirefox12.0でのみ発生します。
これを解決する方法はありますか?
PS:主にlocalStorageスペースの使用量の計算に触発され、これが私がやったことです(これはプロトタイプに基づいており、カスタムの些細なLoggerクラスに依存しますが、これはコンテキストに簡単に適合させる必要があります):
"use strict";
var LocalStorageChecker = Class.create({
testDummyKey: "__DUMMY_DATA_KEY__",
maxIterations: 100,
logger: new Logger("LocalStorageChecker"),
analyzeStorage: function() {
var result = false;
if (Modernizr.localstorage && this._isLimitReached()) {
this._clear();
}
return result;
},
_isLimitReached: function() {
var localStorage = window.localStorage;
var count = 0;
var limitIsReached = false;
do {
try {
var previousEntry = localStorage.getItem(this.testDummyKey);
var entry = (previousEntry == null ? "" : previousEntry) + "m";
localStorage.setItem(this.testDummyKey, entry);
}
catch(e) {
this.logger.debug("Limit exceeded after " + count + " iteration(s)");
limitIsReached = true;
}
}
while(!limitIsReached && count++ < this.maxIterations);
localStorage.removeItem(this.testDummyKey);
return limitIsReached;
},
_clear: function() {
try {
var localStorage = window.localStorage;
localStorage.clear();
this.logger.debug("Storage clear successfully performed");
}
catch(e) {
this.logger.error("An error occurred during storage clear: ");
this.logger.error(e);
}
}
});
document.observe("dom:loaded",function() {
var checker = new LocalStorageChecker();
checker.analyzeStorage();
});
PPS:UIのパフォーマンスへの影響はまだ測定していませんが、デコレータを作成して、X分ごとにのみストレージテストを実行できました(たとえば、ローカルストレージでの実行の最後のタイムスタンプを使用)。