繁体   English   中英

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

[英]Chrome clear cache extension - when run cache is not cleared immediately

我写了一个非常具体的Chrome扩展程序,以清除浏览器缓存并重新加载页面。 我这样做是因为我实际上尝试了Google Store中所有清晰的缓存扩展,但没有一个起作用。

问题是我需要单击三下,直到清除缓存。 有什么想法吗?

这是扩展名:

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

chrome.browsingData.removeCache方法是异步的(即非阻塞)。 这意味着,如果您在调用removeCache之后立即重新加载选项卡,则removeCache调用仍在处理中,并且缓存可能还没有为空。

要获得所需的行为,请等待直到清除缓存为止,方法是将reload调用放在removeCache的回调中。 顺便说一句,您无需调用chrome.tabs.getSelected即可获取当前标签,只需使用传递给chrome.browserAction.onClicked事件的tab参数chrome.browserAction.onClicked

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM