Chrome清除缓存扩展 - 当运行缓存未立即清除时

时间:2014-11-23 08:16:22

标签: javascript google-chrome-extension

我写了一个非常具体的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);

1 个答案:

答案 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);