我正在构建一个依赖缓存的移动网络应用程序。 如果我的缓存使用了太多内存,我会在移动版 Safari 中看到这条消息...
"A problem occurred with this webpage so it was reloaded".
如果没有干预,页面将重新加载并重复做同样的事情几次,直到它放弃。
是否有我可以捕获的事件、我可以监控的堆信息或我可以更改的设置以构建比强制页面重新加载更有弹性的缓存系统?
Chrome 有 window.performace.memory
但我似乎找不到任何与解决我在移动版 Safari 中的问题相关的内容。 Try/catch 语句和 onBeforeUnload 事件不会阻止页面加载或提供清除/减少缓存的机会。
最佳答案
这有帮助吗?
Error handling "Out of Memory Exception" in browser?
var localStorageSpace = function(){
var allStrings = '';
for(var key in window.localStorage){
if(window.localStorage.hasOwnProperty(key)){
allStrings += window.localStorage[key];
}
}
return allStrings ? 3 + ((allStrings.length*16)/(8*1024)) + ' KB' : 'Empty (0 KB)';
};
var storageIsFull = function () {
var size = localStorageSpace(); // old size
// try to add data
var er;
try {
window.localStorage.setItem("test-size", "1");
} catch(er) {}
// check if data added
var isFull = (size === localStorageSpace());
window.localStorage.removeItem("test-size");
return isFull;
关于javascript - 你能在 JavaScript 中捕获内存不足错误吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37708604/