分开承载的核心判断是:短期活动页追求峰值吞吐和可丢弃性,长期知识内容追求可缓存、可增量更新和稳定可索引。如果两类内容共用同一套渲染路径,个别样本可能因为页面少、访问集中而表现良好,规模化后却会因缓存命中率下降、构建时间膨胀或索引信号互相干扰而出现例外。因此,先按内容生命周期和访问形态分类,再决定哪些页面走静态预渲染,哪些走按需渲染或客户端增强。
短期活动页的典型特征是上线时间集中、访问峰值高、内容在活动结束后基本不再维护。这类页面适合采用构建期生成或边缘缓存加短周期失效,把渲染压力从源站前移。判断依据不是页面数量,而是访问曲线:如果同一页面在数小时内被反复请求,缓存收益明显;如果请求分散在长尾页面,缓存命中率低,预渲染反而增加构建负担。
一个可执行动作是给活动页设置独立的缓存策略和过期时间,并在活动结束后将其转为归档或下线。这样做的直接结果是源站不再持续为过期内容付出渲染成本,下一步可以观察归档页是否仍需保留可访问入口,而不是继续沿用活动期的缓存规则。需要注意的例外是:活动页若包含用户个性化信息,缓存整页会串数据,此时应只缓存公共骨架,个性化部分单独请求。
长期知识内容的特点是持续修订、被反复引用、需要被搜索引擎稳定抓取和索引。这类页面更适合静态生成或增量静态再生成,把内容主体在构建阶段输出为可读 HTML,交互增强放到客户端。判断依据是修订频率与页面总量:修订频率低但总量大时,全量重建成本高,应支持按页或按目录增量重建;修订频繁且相互依赖时,则要评估重建队列是否会阻塞发布。
一个实际动作是把知识内容拆成独立数据单元,每个单元对应一个可单独重建的页面。结果是单次修订只触发局部重建,构建时间不随总量线性增长,下一步可以据此决定是否引入更细的缓存分层。例外在于:如果知识内容依赖大量实时数据或跨页聚合,纯静态方案会带来一致性延迟,此时应保留按需渲染的聚合层,而不是强行全静态。
第一,构建时间被活动页拖长。活动页数量少时构建很快,数量增加后每次全量重建都包含大量一次性页面,长期内容的发布节奏被迫等待。第二,缓存命中率被长尾稀释。活动页和知识页共用缓存键时,长尾知识页频繁失效,活动页的峰值缓存优势无法覆盖整体。第三,索引信号互相干扰。活动页短期大量产生又快速消失,若与知识页共用站点结构,抓取预算和内部链接权重会被反复消耗。
区分原因的证据可以这样看:如果构建日志显示耗时集中在一次性页面,属于构建耦合;如果缓存命中率在活动上线后下降而知识页未变,属于缓存键设计问题;如果抓取量在活动结束后骤降且知识页收录未同步恢复,需要排查站点结构和内链,而不是直接断定渲染方案失败。抓取量或请求量归零也可能来自活动自然结束、入口移除或抓取策略调整,不能单独作为处理正确的证明。
把内容按“预计存活时间”和“访问是否集中”两个维度划分。存活短且访问集中,走边缘缓存加短失效;存活长且访问分散,走静态生成加增量重建;存活短但访问分散,优先按需渲染,避免为低命中页面付出构建成本;存活长且访问集中,可以静态生成并配合较长缓存,同时保留手动刷新入口。
假设一个站点有 200 个知识页和 20 个活动页,活动期间活动页请求占九成。若共用全量重建,每次修订知识页都要重建 220 个页面;若把活动页拆为独立缓存层,知识页重建只涉及自身。这个比较只用于说明拆分依据,不构成对任何真实站点的效果承诺。实施后应观察构建耗时分布和缓存命中分布,再决定是否继续细分目录。
先建立内容分类清单,给每类标注生命周期、访问形态和是否允许缓存整页。再为两类内容配置不同的构建与缓存规则,活动页设置明确的下线或归档动作,知识页保留增量重建能力。上线后检查构建日志、缓存命中分布和抓取分布是否与预期分类一致。若活动页归档后知识页抓取仍未恢复,应检查内链和站点结构,而不是继续调整渲染层。若增量重建出现页面间不一致,应缩小重建单元或增加一致性校验,再评估是否保留按需渲染层。