排除缓存假象的核心做法是:让测试请求绕过浏览器缓存、服务端缓存和CDN缓存,并对比“首次访问”和“重复访问”两种状态下的耗时差异。如果两次结果相差很大,说明你看到的快速加载很可能来自缓存副本,而不是服务器真实响应速度。第一次做网站加载速度测试,最容易踩的坑就是拿一个已经缓存过的页面反复测,结果数据漂亮但真实用户首次打开依然很慢。
缓存不是单一的东西,测试前要弄清你面对的是哪一层:
这三层任意一层命中,测试结果都会比“无缓存首次访问”快。判断方法很简单:看响应头里是否有缓存命中标记,以及请求是否真的到达了源站。
下面是一套可以直接执行的流程,适合第一次排查:
curl -o /dev/null -s -w "%{time_total}\n" 页面地址,看服务端真实响应时间。cf-cache-status、x-cache、age 等字段,判断CDN或服务端缓存是否命中。注意:命令行请求通常不经过浏览器缓存,但仍可能命中服务端和CDN缓存。想彻底测源站,需要在CDN后台临时开启“开发模式”或加随机查询参数,让缓存键发生变化。
关键看差异幅度和一致性:
age 大于0,表示内容来自缓存副本,测试的不是源站实时速度。这些是判断线索,不是绝对结论。一个现象可能有多种解释,例如CDN命中会让 age 变大,但服务端页面缓存也会产生类似效果,需要结合响应头具体字段定位。
选择哪种方式,取决于你想测什么:
如果你只是想知道“用户第一次打开到底多快”,优先用无痕窗口加禁用缓存;如果你想定位“服务器处理慢不慢”,优先用命令行加CDN开发模式。
先做一次禁用缓存的完整加载测试,记录总耗时和首字节时间,再和普通刷新结果对比。如果差异明显,就去检查响应头里的缓存命中字段,确认是哪一层缓存在起作用,然后针对那一层单独测试源站速度。只有把缓存因素排除掉,网站加载速度测试的数据才有参考价值。