IE在spa應用下記憶體洩露的處理
1.單頁面應用,無論是vue,或者Angular都會存在記憶體洩露的問題,IE在這方面做得比較差。
Win10 版本的 IE11 和 Edge 兩款瀏覽器,不會有記憶體洩露問題,對於老款的,或者其它環境的IE瀏覽器,官方的回覆是除非安全方面的,否則不會打補丁。
2.解決方案,目前看來在不更改js框架的情況下,可以採用取巧的方式,在使用者重新整理或者使用者點返回時,關閉當前的tab頁,新開一個tab頁,達到記憶體不飆升的效果。
具體程式碼如下:
處理使用者按F5重新整理,在頁面載入時就註冊事件。此程式碼放在index.html或者其它全域性可自動執行的位置
document.onkeydown = function(e){
if(e.keyCode == 116){
var isIE = false || !!document.documentMode;
if(isIE){
var win = window.open(location.href, ‘_blank’);
win.focus();
window.open(”, ‘_self’, ”);
window.close();
}else{
window.location.reload();
}
}
}
處理使用者返回時的重新整理問題,重寫main.vue中的goback()方法:
goback() {
var isIE = false || !!document.documentMode;
if(isIE){
var win = window.open(location.href, ‘_blank’);
win.focus();
window.open(”, ‘_self’, ”);
window.close();
}else{
window.location.reload();
}},
3.頁面複雜度不高的情況下,可以直接使用jquery, 其實也是個不錯的選擇,對於記憶體洩露更好控制和排查。