SharedStorage API 不支持跨站聚合查询,仅允许当前 origin 读写自身数据;entries() 只遍历本源键值对,value 需手动解析;聚合须由各站上报至可信后端统一处理;remainingBudget() 是防滥用计数器而非存储配额。

SharedStorage API 并不支持跨站聚合查询——它根本没提供类似 SQL 的查询能力,也没有跨 origin 的联合遍历机制。你不能用它“查多个站点的数据总和”或“按条件筛选其他站点存的键”。
下面分几个实际操作点讲清楚能做什么、不能做什么、以及容易误踩的地方。
SharedStorage.set() 和 get() 只作用于当前 origin
每个站点(origin)只能读写自己注册并拥有权限的 SharedStorage 实例,且该实例仅绑定当前 origin:
-
sharedStorage.set("click_count", "12")写入的是https://a.example.com自己的存储空间 -
sharedStorage.get("click_count")永远只返回a.example.com自己设的值,哪怕b.example.com也存了同名 key,完全不可见 - 没有
sharedStorage.getAcrossOrigins()或类似方法;浏览器明确禁止跨 origin 直接访问
entries() 返回的只是本 origin 的键值对迭代器
sharedStorage.entries() 返回一个异步迭代器,但它只遍历当前 origin 下通过 set() 存入的条目:
- 它不会合并、排序或过滤其他站点的数据
- 返回的每个
[key, value]都是字符串类型,value 不自动解析为 JSON 或数字,需手动转换 - 若想“统计所有合作站点的曝光总量”,必须由各站点各自调用
sharedStorage.get("impression_total"),再把结果发到可信服务端做聚合——SharedStorage本身不承担这个职责
聚合逻辑必须移出浏览器,在可信上下文中执行
真正可行的聚合路径是:各参与方把指标写入自己的 SharedStorage,然后通过受控信道上报给统一后端:
将调研报告、方案对比、数据分析、需求梳理、会议纪要、设计说明、代码评审、学习笔记等任务产物输出为可在浏览器直接打开的单文件 HTML,替代 Markdown 作为最终交付物。Markdown 在信息密度、视觉清晰度和可分享性上已跟不上 AI 产物的丰富度,HTML 能同时承载排版、表格、SVG 等。
- 广告域
advertiser.net调用sharedStorage.set("reach_count", "42") - 媒体域
publisher.org同样调用sharedStorage.set("reach_count", "89") - 双方都通过
fetch()向同一后端接口(如https://analytics.trusted/api/submit)发送匿名化摘要,附带 origin 签名或 nonce 验证来源合法性 - 后端校验来源、去重、累加,生成聚合报表——这才是唯一合规且可审计的做法
remainingBudget() 不是资源配额,而是防滥用计数器
调用 sharedStorage.remainingBudget() 返回的是当前 origin 剩余的“操作点数”,不是内存或存储空间:
立即学习“前端免费学习笔记(深入)”;
- 每次
set()、get()、delete()都消耗 1 点;entries()迭代一个条目也消耗 1 点 - 初始预算约 1000 点,每天重置,超限后所有操作静默失败(不抛错,
get()返回undefined) - 这意味着:高频轮询
entries()做“伪聚合”会快速耗尽配额,且得不到跨 origin 数据——纯属无效操作
SharedStorage 只负责“安全存单点指标”,别指望它替代后端数据库或消息队列。最容易被忽略的一点是:它的设计目标从来就不是通用数据共享,而是为隐私沙盒场景下的**受限、可审计、可撤销的轻量状态同步**提供基础设施。


















