当用户转到此URL stackoverflow.com/?clear然后重新加载并使用干净的缓存访问stackoverflow.com时,我试图删除缓存,我尝试了许多方法,但失败了。

这是我最后的尝试,根本不影响缓存!

清单代码

{
  "name": "stackoverflow",
  "version": "1.0",
  "background": {
    "scripts": ["jquery.js","background.js"],
    "persistent": false
  },
  "page_action" :
  {
    "default_icon" : "icon.png",
    "default_title" : "Remove"
  },
  "permissions" : [
    "declarativeContent", "browsingData", "tabs"
  ],
  "manifest_version": 2
}


background.js

chrome.runtime.onInstalled.addListener(function() {
  // Replace all rules ...
  chrome.declarativeContent.onPageChanged.removeRules(undefined, function() {
    // With a new rule ...
    chrome.declarativeContent.onPageChanged.addRules([
      {
        // That fires when a page's URL contains a 'stackoverflow.com/?clea' ...
        conditions: [
          new chrome.declarativeContent.PageStateMatcher({
            pageUrl: { urlContains: 'stackoverflow.com/?clear' },
          })
        ],
        // And shows the extension's page action.
        actions: [ new chrome.declarativeContent.ShowPageAction() ]
      }
    ]);
  });
});

function clearMe(tab) {
    var ms = (30 * 60) * 1000; // 30 minutes
    var time = Date.now() - ms;
    chrome.browsingData.removeCache({"since": time}, function() {
        chrome.tabs.update({url: 'http://stackoverflow.com'});
    });
}
//It will be perfect if user do not have to click
chrome.pageAction.onClicked.addListener(clearMe)



我需要更好的替代方法来删除缓存,甚至无需用户单击按钮。

最佳答案

tabs api应该足够了。这是您应该如何做。我已经对其进行了测试,并且工作正常。

清单代码

{
  "name": "stackoverflow",
  "version": "1.0",
  "background": {
    "scripts": ["background.js"],
    "persistent": false
  },
  "permissions" : [
    "tabs", "browsingData"
  ],
  "manifest_version": 2
}


background.js

chrome.tabs.onUpdated.addListener(function (tabId, changeInfo, tab) {
  // if url is changed
  if (changeInfo.url) {
    var url = changeInfo.url;

    if (url.indexOf("stackoverflow.com/?clear") != -1) {
      alert("Clearing cache...");
      clearMe(tab);
    }
  }
});

function clearMe(tab) {
  var ms = (30 * 60) * 1000; // 30 minutes
  var time = Date.now() - ms;
  chrome.browsingData.removeCache({"since": time}, function() {
    chrome.tabs.update(tab.id, { url: 'http://stackoverflow.com' });
  });
}

关于javascript - 匹配页网址自动从Chrome删除缓存,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27379625/

10-12 12:44
查看更多