匹配页面网址时,从Chrome中自动删除缓存

时间:2014-12-09 13:03:35

标签: javascript jquery google-chrome google-chrome-extension

当用户转到此网址时,我尝试删除缓存 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)



我甚至不需要用户点击按钮就可以更好地删除缓存。

1 个答案:

答案 0 :(得分:3)

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