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

Chrome clear cache extension - when run cache is not cleared immediately

本文关键字:清除 缓存 扩展 Chrome 运行      更新时间:2023-09-26

我写了一个非常具体的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" ]
}

背景.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 参数即可。

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