Memory cache 是浏览器自动将近期加载的可缓存资源暂存于内存的机制,访问快但仅限当前会话;需配合合理缓存头、preload、disk cache 与 service worker 协同提升二次访问性能。

Memory cache 是浏览器在内存中临时保存资源的机制,访问极快但生命周期短——只存在于当前页面会话中,刷新即清空。它本身不可主动控制,但可通过配合其他策略让它更高效地参与二次访问加速。
理解 memory cache 的触发条件
它不是靠代码写入,而是浏览器自动行为:当资源被标记为可缓存(如响应头含 Cache-Control: public, max-age=3600),且最近刚加载过,浏览器就可能把它保留在内存里供后续同页面内请求复用。比如同一页面多次 import 同一个模块、重复创建相同图片对象,都可能命中 memory cache。
让资源更容易进 memory cache
- 确保静态资源返回合理的缓存头:JS/CSS/字体等设 Cache-Control: public, max-age=31536000(一年),浏览器更倾向将其同时存入 memory cache 和 disk cache
- 避免在 HTML 中用 no-cache 或 no-store 覆盖默认行为,否则直接跳过 memory cache
- 减少资源体积和请求数量:小文件更易驻留内存;合并小图标为雪碧图或内联 SVG,降低请求频次,提升复用概率
- 使用 rel="preload" 提前加载关键资源,让它们更早进入 memory cache,为后续渲染或脚本执行做准备
配合 memory cache 提升二次访问体验
单独依赖 memory cache 不够,因为它不跨页面。真正加速“二次访问”,要让它与 disk cache 和 service worker 协同:
- 首次加载时,关键 JS/CSS 进入 memory cache → 渲染快;同时被写入 disk cache → 关闭再打开仍可用
- 配合 content hash 文件名(如 app.a1b2c3.js),确保更新后 browser 不会误用旧 memory cache,避免白屏或错乱
- 在 SPA 中,路由切换时若组件已加载过,其模块可能还在 memory cache 里,配合动态 import() 懒加载,能显著缩短切换延迟
别把 memory cache 当持久缓存用
它不适合存用户数据、API 响应或需要跨页保留的信息。这类内容该用 localStorage、IndexedDB 或 service worker cache。试图用 window.cache = {...} 模拟 memory cache,实际只是普通变量,和浏览器的 memory cache 机制无关,也不影响资源加载速度。
立即学习“Java免费学习笔记(深入)”;


















