2014-11-23 4 views
0

Я написал очень специфическое расширение для увеличения, чтобы очистить кеш браузера и перезагрузить страницу. Я сделал это, потому что я попробовал практически все чистые расширения кешей в Google Store, и никто не работал.Расширение кеша прозрачного кеша - при запуске кеша немедленно не очищается

Проблема в том, что мне нужно щелкнуть три раза, пока кеш не будет очищен. Любые идеи почему?

Это расширение:

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, чтобы получить текущую вкладку, просто используйте параметр tab, который передается в событие chrome.browserAction.onClicked.

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); 
Смежные вопросы