Html 本地存储导致浏览器崩溃
Html 本地存储导致浏览器崩溃,html,google-chrome,firefox,local-storage,Html,Google Chrome,Firefox,Local Storage,localStorageTest在localStorage中存储递增的值,直到达到浏览器的localStorage大小限制 function localStorageTest(key, len) { var value = window.localStorage.getItem(key); value = (value == null)?"":value; var numIters = len - value.length; while(numIters--) {
localStorageTest
在localStorage中存储递增的值,直到达到浏览器的localStorage大小限制
function localStorageTest(key, len) {
var value = window.localStorage.getItem(key);
value = (value == null)?"":value;
var numIters = len - value.length;
while(numIters--) {
value += "1";
window.localStorage.setItem(key, value);
if (window.localStorage.getItem(key) != value) {
console.log("limit reached at " + (value.length-1).toString() + " bytes");
break;
}
}
console.log("stored " + value.length + " bytes");
}
铬:
localStorageTest("1", 80000);
<browser crashed>
铬:
localStorageIncrementalTest("1", 30000);
stored 30000 bytes
stored 35000 bytes
...
stored 1800000 bytes
<browser crashed>
localStorageTest2();
<browser crashed>
铬:
localStorageIncrementalTest("1", 30000);
stored 30000 bytes
stored 35000 bytes
...
stored 1800000 bytes
<browser crashed>
localStorageTest2();
<browser crashed>
localStorageTest2();
火狐:
localStorageTest2();
<browser crashed>
localStorageTest2();
测试localStorage2也导致浏览器崩溃。我不确定浏览器崩溃的原因,但值得在和上报告 但是,localStorage并不适合这种用途。它是一个同步API,在使用时会给浏览器带来很大的压力,特别是当它被频繁使用时,通常会导致页面性能不佳 此外,您的测试不会产生正确的结果-
setItem(x,y)
会在您超出限制时引发异常<代码>localStorage.setItem(x,y);if(y==localStorage.getItem(x)){…}将永远不会到达if
部分,因为当达到限制时,它将提前抛出异常
替代方案是简单变量、服务器存储或IndexedDB
Chrome还有文件系统API和Web SQL数据库API,但最好不要依赖它们,因为其他浏览器不支持它们
localStorageTest2();
<browser crashed>
localStorageTest2();
<browser crashed>