我正在 chrome 中开发一个扩展程序,并且每次用户在 Google 中搜索时我都尝试执行一个操作。目前我正在使用chrome.webRequest onBeforeRequest 监听器。它在大多数情况下都能正常工作,但有些请求是通过缓存完成的,不执行任何调用。我在有关缓存的 API 文档中找到了这一点:
Chrome 使用两个缓存——一个磁盘缓存和一个非常快的内存缓存。内存缓存的生命周期与渲染进程的生命周期相关联,渲染进程的生命周期大致对应于一个选项卡。从内存缓存响应的请求对 Web 请求 API 是不可见的。如果请求处理程序更改其行为(例如,根据哪些请求被阻止的行为),则简单的页面刷新可能不会考虑此更改的行为。要确保行为更改通过,请调用handlerBehaviorChanged()以刷新内存缓存。但不要经常这样做;刷新缓存是一项非常昂贵的操作。在注册或注销事件侦听器后,您无需调用handlerBehaviorChanged() 。
我尝试使用 handlerBehaviorChanged() 方法清空内存缓存,但没有区别。虽然不推荐我什至尝试在每次请求后调用它。
这是我的代码:
chrome.webRequest.MAX_HANDLER_BEHAVIOR_CHANGED_CALLS_PER_10_MINUTES = 1000;
chrome.webRequest.onBeforeRequest.addListener(function (details) {
//perform action
chrome.webRequest.handlerBehaviorChanged();
} {
urls: ["*://*.google.com/*"]
});
有没有办法从扩展中清空/禁用这个内存缓存?