排查网页加载速度时,缓存最容易制造两种假象:一是浏览器或CDN返回旧文件,让你误以为优化没生效;二是本地缓存命中,让页面看起来很快,实际新访客仍然很慢。排除缓存假象的核心做法是:先固定测试条件,再用“禁用缓存”和“全新环境”两种方式各测一次,对比差异,而不是只看一次刷新结果。
浏览器为了省流量,会把CSS、JS、图片等静态资源存到本地。第二次打开时,这些文件直接从磁盘读取,耗时接近0毫秒,网络面板里甚至看不到请求。你看到的“快”,可能只是本地缓存快,不代表服务器响应快。
CDN和反向代理也会缓存HTML或接口响应。如果源站已经更新,但CDN缓存未过期,用户拿到的还是旧版本。此时你测到的加载时间,是CDN边缘节点的速度,不是源站真实速度。
排除缓存假象有两类常用做法,选哪种取决于你要验证的对象。
判断依据很简单:如果方案A很快、方案B很慢,问题在服务端或CDN回源;如果两者都慢,问题在资源体积、请求数量或渲染阻塞;如果方案A反而更慢,可能是禁用缓存后暴露了未压缩的源文件。
假设某页面本地刷新耗时0.8秒,无痕窗口首次打开耗时3.2秒(此为假设示例,非真实项目数据)。差异说明本地缓存掩盖了首访成本,优化重点应放在首屏关键资源和服务器响应上,而不是继续压缩已被缓存的图片。
Service Worker会拦截请求并返回缓存内容,普通刷新不一定绕过它。可在开发者工具Application面板中注销Service Worker后再测。另外,Cache-Control: no-cache并不等于不缓存,它要求先向服务器验证;no-store才是完全禁止存储。混淆这两个指令,会导致你以为已经禁用了缓存,实际仍在复用旧文件。
还要注意:测速工具显示的“首次加载”和“重复加载”是两个不同指标。比较方案时,必须保证测试的是同一类指标,否则结论无效。
选定一个目标页面,按上面的四步各测一轮,把“禁用缓存”“无痕首访”“CDN命中状态”三项结果并排记录。只有当无痕首访速度也改善时,才能确认网页加载速度优化真正生效。