【问题标题】:Chrome clear cache extension - when run cache is not cleared immediatelyChrome 清除缓存扩展 - 当运行缓存未立即清除时
【发布时间】:2015-01-21 02:36:11
【问题描述】:

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

【问题讨论】:

    标签: javascript google-chrome-extension


    【解决方案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);
    

    【讨论】:

      猜你喜欢
      • 2018-09-11
      • 2017-05-19
      • 1970-01-01
      • 1970-01-01
      • 2018-06-04
      • 1970-01-01
      • 1970-01-01
      • 2022-01-10
      • 2022-01-20
      相关资源
      最近更新 更多