我写了一个非常具体的chrome扩展来清除浏览器缓存并重新加载页面。我之所以这样做,是因为我在Google商店中尝试了几乎所有清晰的缓存扩展,但都没有。
问题是我需要单击三次才能清除缓存。有什么想法吗?
这是扩展名:
的manifest.json:
{
"manifest_version": 2,
"name": "Clear Cache",
"version": "1.0",
"description": "Clear Cache",
"browser_action": {
"default_title": "Clear Cache",
"default_icon": "icon.png"
},
"background": {
"scripts": ["background.js"]
},
"permissions": [ "browsingData" ]
}
background.js:
function clearMe () {
// clears cache
var ms = (30 * 60) * 1000; // 30 minutes
var time = (new Date()).getTime() - ms;
chrome.browsingData.removeCache({"since": time});
// reloads page
chrome.tabs.getSelected(null, function(tab) {
chrome.tabs.reload(tab.id);
});
}
chrome.browserAction.onClicked.addListener(clearMe);
答案 0 :(得分:1)
chrome.browsingData.removeCache
方法是异步的(即非阻塞)。这意味着如果您在调用removeCache
后立即重新加载标签,则removeCache
调用仍在处理中,并且缓存可能尚未为空。
要获得所需的行为,请等待清除缓存,方法是将reload
调用回调到removeCache
。顺便说一下,您无需致电chrome.tabs.getSelected
来获取当前标签,只需使用传递给chrome.browserAction.onClicked
活动的tab
参数。
function clearMe(tab) {
var ms = (30 * 60) * 1000; // 30 minutes
var time = Date.now() - ms;
chrome.browsingData.removeCache({"since": time}, function() {
chrome.tabs.reload(tab.id);
});
}
chrome.browserAction.onClicked.addListener(clearMe);