WHAT - 缓存命中 Cache Hit 和缓存未命中 Cache Miss
文章目录一、什么是缓存命中二、前端开发要知道哪些缓存机制以及命中条件1. 浏览器缓存主要针对静态资源常见的缓存位置关键 HTTP 头字段决定命中与否2. 前端应用层缓存例如数据请求三、前端开发者需要掌握哪些实践浏览器缓存策略实战建议数据缓存建议四、如何判断资源是否命中缓存五、缓存未命中总结作为前端开发者理解缓存命中Cache Hit非常重要尤其在你处理性能优化、资源加载、用户体验提升、离线支持等方面。一、什么是缓存命中缓存命中Cache Hit指当你请求某个资源比如图片、JS 文件、API 响应等时浏览器或其他中间层发现缓存中已有该资源于是直接返回缓存结果而不需要再去网络请求。这样做有两个好处提升加载速度从缓存读取远比从网络拉取快得多。减少服务器压力命中缓存后不发起请求减轻后端负担。二、前端开发要知道哪些缓存机制以及命中条件前端缓存机制主要分为两大类浏览器缓存静态资源和应用层缓存数据、状态。1. 浏览器缓存主要针对静态资源常见的缓存位置内存缓存Memory Cache短期缓存刷新页面即失效。磁盘缓存Disk Cache持久性更强关闭浏览器后依然有效。Service Worker 缓存你控制的离线缓存可以精细化管理。Push CacheHTTP/2很短暂针对同一次会话的缓存。关键 HTTP 头字段决定命中与否字段作用示例Cache-Control控制是否缓存、缓存时长max-age3600,no-cacheETag内容标识符用于比较是否更新ETag: abc123Last-Modified上次修改时间Last-Modified: Wed, 01 May 2024 12:00:00 GMTExpires绝对过期时间已被 Cache-Control 替代Expires: Tue, 21 May 2025 08:00:00 GMT命中机制简化流程浏览器请求资源。如果缓存未过期如max-age生效 →强缓存命中直接使用缓存。如果缓存过期 → 浏览器发送带上If-None-Match对比ETag或If-Modified-Since对比修改时间。若内容没变服务器返回304 Not Modified→协商缓存命中。否则重新返回新资源。2. 前端应用层缓存例如数据请求用于缓存 API 请求或状态数据例如localStorage/sessionStorage持久化存储。IndexedDB复杂结构、本地数据库。前端框架内缓存如 React Query、SWR、Apollo Client 等。例如在 SWR 中数据缓存命中机制基于key-value和revalidation 策略const{data}useSWR(/api/user,fetcher)再次访问相同 keyURL→ 命中缓存。根据配置决定是否 revalidate重新请求。三、前端开发者需要掌握哪些实践浏览器缓存策略实战建议设置合理的 Cache-ControlJS/CSS 设置长时间缓存Cache-Control: public, max-age31536000, immutableHTML 页面设置短时间缓存 协商缓存no-cache使用文件哈希名作为缓存破坏手段Cache Busting比如main.3f3c1f.js文件变了名字也变了浏览器会重新加载。服务端正确返回 ETag/Last-Modified保证协商缓存生效减少带宽开销。数据缓存建议用 SWR、React Query 等库管理 API 缓存。配合缓存时间和 revalidation 策略如stale-while-revalidate。结合 localStorage / IndexedDB 实现离线缓存支持。四、如何判断资源是否命中缓存打开浏览器开发者工具DevTools刷新页面Network 面板查看请求看Status和Size列200 (from disk cache)磁盘缓存命中200 (from memory cache)内存缓存命中304 Not Modified协商缓存命中五、缓存未命中缓存未命中Cache Miss是指在系统尝试从缓存中读取数据时未找到所需数据因此需要从更慢的存储介质比如内存或硬盘中加载数据的情况。这会导致访问延迟增加是性能优化中需要重点关注的问题。缓存未命中通常分为以下几种类型强制未命中Compulsory Miss也叫冷启动未命中是指某个数据首次被访问时由于之前从未加载过所以缓存中自然没有必须从原始数据源加载。容量未命中Capacity Miss缓存容量不足无法容纳所有活跃数据因此部分数据被替换后续访问这些数据时就会发生未命中。冲突未命中Conflict Miss在组相联缓存或直接映射缓存中不同的数据映射到了同一个缓存位置导致彼此竞争位置并被替换从而造成未命中。举个例子假设你打开了一个网页网页上的某张图片之前没有加载过——这时候浏览器会从服务器下载图片并缓存起来。这就是强制未命中。下次你再次访问该页面如果缓存被清除或图片被替换掉了再加载时就可能是容量未命中或冲突未命中。总结缓存命中是前端性能优化的核心手段之一理解浏览器缓存机制、合理配置 HTTP 头信息、结合应用层缓存工具可以极大提升用户体验。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2411489.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!