Manifest V3 Service Worker避免重复调用存储的方案问询
关于Chrome扩展MV3中网络请求规则缓存的方案疑问
一、原始问题背景
在基于用户设置规则处理网络请求的场景中,MV2的持久化后台脚本可缓存规则,避免每次请求都重复调用存储接口;但MV3不支持这种持久化后台的实现方式,现询问是否有更优的替代方案。
示例代码如下:
chrome.webRequest.onBeforeRequest.addListener(onRequest, {urls: ['<all_urls>']}); function onRequest(requestInfo) { /* process ------------------ 1. get user preferences asynchronously e.g. await chrome.storage.local.get(); 2. loop through all criteria 3. convert all patterns to RegExp 4. check if they match the criteria 5. prepare a process 6. repeat the same for each request */ }
注:上述监听器仅为示例,问题核心聚焦于存储数据的缓存。
二、方案可行性询问
基于相关回复,拟采用以下缓存方案,想确认该方案是否可行:
// cache let cache; chrome.webRequest.onBeforeRequest.addListener(onRequest, {urls: ['<all_urls>']}); function onRequest(requestInfo) { /* process ------------------ 1. check if cache is set if (!cache) { await prepareCache(); } 2. check if they match the criteria in cache 3. prepare a process 4. repeat the same for each request */ } async function prepareCache() { /* 1. get user preferences asynchronously e.g. await chrome.storage.local.get(); 2. convert all patterns to RegExp 3. save to cache */ }
内容的提问来源于stack exchange,提问作者erosman
相关产品推荐
相关产品推荐

