把促销页、报名页这类短期活动内容,和教程、术语解释这类长期知识内容放在同一套模板、同一批 URL 上,往往会出现一种矛盾:活动页改版后速度看起来很好,但知识页的访问速度始终上不去;或者反过来,知识页很轻,活动页一上线就拖慢整站。更常见的情况是,你已经压缩了图片、开了缓存,速度指标仍然不稳定。这通常不是优化手段失效,而是两类内容被混在同一个承载层里,互相牵制。
短期活动的特征是生命周期短、流量集中、结构简单但可能临时插入大量脚本和追踪代码。长期知识内容的特征是页面数量多、单页流量低、需要持续被访问和引用。当两者共用同一套前端资源、同一个渲染方式、同一层缓存策略时,任何一方做出调整都会影响另一方。
典型表现是:活动上线期间,知识页的加载时间跟着变长,因为公共资源包被活动脚本撑大;活动结束后,知识页恢复正常,但活动页的历史 URL 又留下重定向和残留资源。此时如果只看整站平均速度,会误判问题出在服务器或 CDN,而实际原因是两类内容没有分开承载。
短期活动为了即时转化,通常会把交互脚本、倒计时、弹窗、A/B 测试代码放在首屏关键路径上。这些资源如果被合并进全站公共包,长期知识页也会被迫下载它们,即使知识页根本用不到。结果是知识页的首次渲染被无关脚本阻塞。
判断依据:打开一个知识页,查看网络请求中是否有只在活动页出现的脚本或样式文件。如果有,且这些文件体积占比较大,就属于资源优先级被占用。此时把活动专用资源从公共包中拆出,只在活动页按需加载,知识页的渲染阻塞会减少。这个动作的结果会直接影响下一步:如果拆分后知识页速度改善,说明问题在资源耦合;如果没有改善,应继续检查缓存和渲染方式。
长期知识内容希望缓存时间长、更新频率低,这样访问速度稳定。短期活动内容需要频繁更新价格、库存、场次或文案,缓存时间必须短。如果两类页面共用同一套缓存规则,就会出现两种错误:活动页缓存过长导致信息过期,或者知识页缓存过短导致每次访问都回源。
区分这两种解释的证据不同。资源耦合的证据出现在网络请求列表和资源体积上;缓存冲突的证据出现在响应头中的缓存策略、回源频率以及活动更新后知识页是否也被迫刷新。假设一个站点的知识页设置了较长的浏览器缓存,而活动页因为需要实时更新被设置为不缓存,但两者共用同一个 URL 路径规则,那么活动页的更新动作可能触发整段路径的缓存失效,连带知识页一起回源。这个例子是假设性的,用于说明判断方法:看缓存规则是按内容类型划分,还是按路径一刀切。
要区分上述两种解释,不需要立刻重构整站。可以选一个知识页和一个活动页,分别记录它们在活动上线前、上线中、下线后的加载表现。重点观察三组数据:首屏渲染开始时间、公共资源包的体积变化、以及回源请求是否只在活动页出现。
这个隔离测试的动作本身会给出下一步方向:资源耦合优先拆包和按需加载;缓存冲突优先按内容类型设置不同的缓存策略,而不是按目录统一处理。注意,抓取量或请求量下降不能单独证明拆分正确,因为活动结束、外链变化、季节性波动都可能造成同样现象,需要结合上面的证据一起判断。
把短期活动和长期知识内容分开承载,不等于必须拆成两个域名或两个站点。更常见的做法是在同一站点内,用不同的模板、不同的资源入口和不同的缓存策略来区分。这样做的代价是维护成本上升:活动模板需要单独管理,知识页的公共资源需要保持精简。
取舍的关键在于活动频率。如果活动很少,临时拆包可能不值得;如果活动频繁且每次都会影响知识页,分开承载就是必要动作。另一个取舍是 URL 结构:活动页适合独立路径并设置明确的下线或归档规则,知识页适合稳定路径并保持长期可访问。这样搜索引擎在抓取和索引时,能更清楚地区分哪些页面是短期存在、哪些页面是长期参考,而抓取、索引和排名本身是不同环节,速度改善只作用于其中一部分,不应期待一次拆分解决所有环节的问题。
最终要回到一个可执行判断:先确认知识页变慢是否与活动资源或缓存规则有关,再决定拆资源还是拆缓存。如果两个证据都指向耦合,分开承载就是合理选择;如果证据不足,继续整站压缩图片和合并文件,可能只是重复已经做过的动作。