2014-11-23 100 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);