2014-11-23 101 views
0

我写了一个非常具体的Chrome扩展来清除浏览器缓存并重新加载页面。我这样做是因为我在Google Store中尝试了几乎所有清除缓存扩展,但都没有工作。Chrome清除缓存扩展 - 当运行缓存不立即清除

问题是我需要点击三次,直到清除缓存。任何想法为什么?

这是扩展名:

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

回答

0

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