通常,我们会在浏览器中缓存一些数据。保存用户的部分信息或者一些其他信息。当关闭tab的时候我们希望清除这些数据。
解决:主要是两个方法,onunload,和 onbeforeunload
但是直接关闭浏览器,该方法无法无用(客户端操作无法监听)
var _beforeUnload_time = 0;
var _gap_time = 0;
window.onunload = function() {
_gap_time = new Date().getTime() - _beforeUnload_time;
// 页面刷新_gap_time 会较长
if (_gap_time <= 4) {
// 清除缓存数据
storage.clearAll();
}
};
window.onbeforeunload = function() {
_beforeUnload_time = new Date().getTime();
};
这里使用的store.js作为缓存解决方案,store-npm
可以设置失效时间,建议使用,很方便。
var engine = require('store/src/store-engine')
var storages = [
require('store/storages/localStorage'),
require('store/storages/cookieStorage')
]
var plugins = [
require('store/plugins/defaults'),
require('store/plugins/expire')
]
var store = engine.createStore(storages, plugins)
store.set('foo', 'bar', new Date().getTime() + 3000)