You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 17:54:23