识别网站加载速度中的配置冲突,核心是找“同一件事被两处以上设置同时管理、且要求不一致”的地方。最常见的是缓存规则互相覆盖、压缩与已压缩资源重复处理、CDN与源站缓存时长矛盾、资源预加载与延迟加载指向同一文件。人手有限时,不要逐项优化,而应按“影响面大、验证快、改动可回退”的顺序排查,先处理能明确复现的冲突。
打开浏览器开发者工具的 Network 面板,刷新页面,按耗时排序,记录前三到五个最慢的请求。然后做一次对照:同一页面用无痕窗口再测一次,对比两次结果。
Cache-Control、Expires、ETag、Content-Encoding。Cache-Control 写 no-store,而 Expires 却是未来时间,说明两套缓存策略冲突,浏览器通常以更严格的一方为准,缓存形同虚设。这一步的判断条件是:你能稳定复现同一现象。如果两次测试差异很大,先排除网络波动,再继续。
网站加载速度受浏览器缓存、CDN缓存、源站缓存三层影响。冲突往往出现在“上层说可以缓存很久,下层说不许缓存”。
Cache-Control。适用条件是:你无法直接改服务器配置时,可先在CDN或反向代理层调整,但要确认它不会覆盖源站已有的正确规则。
压缩冲突有两种典型表现:一是服务器已经压缩,CDN又压一次;二是声明了压缩但实际未生效。
Content-Encoding 与实际传输体积是否匹配。Content-Encoding 是否为 gzip 或 br。注意:HTTPS 只保证传输加密,不代表压缩配置正确,也不保证没有安全漏洞,两者要分开看。
预加载、预连接、延迟加载如果指向同一资源,会产生冲突。例如一个脚本既被 preload 又被标记为延迟执行,浏览器可能提前下载却推迟执行,或者重复请求。
<head> 中的 rel="preload"、rel="prefetch" 与脚本、图片上的 loading="lazy" 是否作用于同一文件。preload 和 lazy,列出涉及的文件名,看是否有交集。如果无法确定哪些属于首屏关键资源,可以先只保留一项预加载,观察 Network 面板中该请求是否提前发起且未被重复请求。
时间和人手有限时,不要一次改多项。每次只改一处,改完立即用同一页面、同一网络环境复测,记录最慢请求的变化。
这套顺序的依据是:缓存和压缩影响所有访问者,优先级最高;加载指令影响首屏体验,次之;单项资源优化收益最小,放最后。
下一步,从第一步的 Network 面板开始,先记录当前最慢的三个请求及其响应头,再按缓存、压缩、加载指令的顺序逐项核对,每确认一处冲突就单独修改并复测。