站点运营

站点运营:传输压缩自查,别让服务器把未压缩的整页发给蜘蛛

很多站点只关注图片压缩和浏览器缓存,却忽略了 HTML、CSS、JS 这类文本资源默认可能未压缩。本文从压缩是否生效、覆盖范围、重复压缩、CDN 与源站一致性几个角度,给出一份可执行的传输压缩自查清单,帮你在同样带宽下让抓取更顺畅。

站点运营

站点运营:传输压缩自查,别让服务器把未压缩的整页发给蜘蛛

不少站点在做性能自查时,第一反应是压图片、加缓存,却漏掉了更基础的一件事:HTML、CSS、JS 这些文本资源,很可能是原样发出去的。一个 200KB 的 HTML 文档,正常配置压缩后通常只剩三四十 KB。对用户来说是打开快一点,对搜索引擎的抓取程序来说,则是同样的抓取时间和带宽能多看几个页面。

为什么压缩值得单独拿出来查

压缩不像换服务器那样有明显感知,它属于「默认开着就没人提,默认关着也没人喊」的配置。很多问题出现在这几种场景:服务器迁移后没带上原来的压缩配置;新上的 CDN 回源时把压缩头丢掉了;或者站点为了省 CPU,把压缩等级调得极低,几乎等于没压。

  • 页面体积偏大,首屏资源下载时间被拉长;
  • 抓取程序在相同时间预算内能取的页数变少;
  • 移动网络下用户等待明显,跳出率容易上升;
  • 带宽账单比预期高,但排查时找不到原因。

自查清单

一、确认压缩是否真的生效

不要只看配置文件里写了什么,要看响应里实际返回了什么。用浏览器开发者工具的 Network 面板,点开一个 HTML 文档,看响应头里有没有 Content-Encoding: gzipbr,同时对比 Size 和 Transferred 两列的差距。也可以直接在命令行里带请求头访问,观察返回结果。

二、看压缩覆盖了哪些类型

压缩最该覆盖的是文本类资源:HTML、CSS、JS、JSON、SVG、XML,以及纯文本的接口返回。有些服务器配置只对 .html 生效,CSS 和 JS 依然裸奔,这时候页面看着能开,实际传输量并不小。建议逐类抽查,而不是抽查一个页面就下结论。

三、别对已经压过的文件再压一遍

JPEG、PNG、WebP、WOFF2、MP4 这类格式本身已经做过压缩,再用 Gzip 处理一遍,往往只增加 CPU 开销,体积几乎没有变化。配置里如果写的是「全站所有类型都压」,可以把这几类排除掉,把 CPU 留给真正受益的文本资源。

四、CDN 和源站是否一致

压缩可以在源站做,也可以在 CDN 边缘做,两边都做容易重复,两边都不做就直接漏掉。自查时至少要确认一件事:用户实际拿到的那份响应,压缩是不是生效的。另外,如果按请求头来决定是否压缩,记得让缓存能区分开压缩和未压缩的版本,否则可能出现一部分用户拿到乱码或异常内容。

几个容易踩的坑

压缩等级不是越高越好。等级调到最高,体积可能只比中等档小几个百分点,但 CPU 占用明显上升。对绝大多数站点,选一个中间档位,把稳定性放在第一位更划算。
  • 只测首页:首页往往是特殊处理的,内页和列表页才是大多数抓取目标;
  • 忽略动态页面:模板渲染出来的 HTML 同样需要压缩;
  • 改完不复查:压缩配置变更后,最好隔天再抽查一次,确认没有回滚或被覆盖;
  • 只看体积不看内容:确认解压后页面显示正常,别只顾着数字变小。

可以照着做的落地步骤

  1. 挑三类页面各一个:首页、栏目列表页、正文详情页;
  2. 分别查看响应头中的编码字段,记录是否压缩、用了哪种算法;
  3. 对比压缩前后的传输体积,估算全站节省的量级;
  4. 检查配置中是否包含图片、字体、视频等已压缩格式,能排除就排除;
  5. 确认 CDN 与源站的压缩策略不冲突,缓存能正确区分;
  6. 把结论和修改记录写进运维文档,方便下次迁移时对照。

传输压缩属于投入很小、收益相对稳定的一类优化。它不会直接带来收录或排名上的变化,但会让页面更轻、抓取更省力,属于站点运营里那种「做完了平时想不起来,出问题时才发现关键」的基础项。每隔一段时间顺手查一遍,比等到带宽告警或用户投诉再去翻配置要轻松得多。