通过合理设置服务器响应的 Cache-Control HTTP 头,浏览器可自动缓存 元素加载的音频资源(如 FLAC 文件),无需额外 JavaScript 逻辑或 Service Worker。
通过合理设置服务器响应的 `cache-control` http 头,浏览器可自动缓存 `
现代浏览器对
✅ 推荐的缓存策略示例(服务端需配置):
Cache-Control: public, max-age=604800, immutable
- public:允许中间代理和浏览器共同缓存;
- max-age=604800:缓存有效期为 7 天(单位:秒);
- immutable:明确告知浏览器该资源在有效期内不会变更(适用于带哈希指纹的静态资源,如 sound-v2.1.0-abc123.flac),可避免条件请求(如 If-None-Match),进一步提升性能。
⚠️ 注意事项:
- FLAC 兼容性:确保目标浏览器支持 FLAC 解码(Chrome ≥ 50、Firefox ≥ 52、Edge ≥ 14;Safari 目前不支持原生 FLAC 播放,需转码为 ALAC 或 MP3 作为 fallback);
- URL 稳定性:缓存以完整 URL 为键,若音频 URL 动态变化(如含时间戳、随机参数),将导致缓存失效,建议移除无意义查询参数,或使用内容哈希命名;
- 用户脚本限制:Userscript 无法修改服务端响应头,因此必须由音频资源的实际托管方(如网站后端、CDN 或 GitHub Pages 的自定义 headers 配置)正确设置 Cache-Control;
- 调试验证:在 Chrome DevTools 的 Network 面板中检查音频请求,确认 Size 列显示 (memory cache) 或 (disk cache),且 Status 为 200(而非 304),即表示命中强缓存。
? 小结:浏览器内置的 HTTP 缓存是轻量、可靠且标准兼容的首选方案。相比手动 fetch + indexedDB 或 Cache API 管理,它更简洁、无运行时开销,并天然支持跨页面/会话复用。只需确保服务端正确配置响应头,

















