答案取决于一个前提:活动页是否需要被搜索持续发现。如果活动只靠站内入口、私域推送或广告导流,且生命周期以天或周计,就应该让它与长期知识内容在构建、路由和资源加载上彻底分离;如果活动页本身承担拉新搜索需求,则不能简单隔离,而要把可复用的性能预算和内容骨架沉淀到长期层。分开承载不是二选一的口号,而是先判断流量来源,再决定哪些资源进公共包、哪些进活动包。
两种做法都成立,但条件不同。第一种条件:活动页的访问几乎全部来自站内 banner、短信、社群或投放落地,用户不需要通过搜索找到它。此时把活动代码塞进长期知识内容的公共包,只会让知识页白白下载活动样式、倒计时脚本和弹层组件。第二种条件:活动主题本身有搜索需求,例如节日专题、年度盘点,用户会主动搜进来。此时完全隔离会让活动页缺少长期积累的内链和结构化内容,反而更难被理解。
可区分原因的证据来自构建产物和访问路径:查看活动相关 chunk 是否被知识页引用,查看活动页的入口链接是否只存在于临时位置。如果活动 chunk 出现在知识页的首屏依赖里,说明承载方式已经混在一起;如果活动页没有任何来自长期内容的内链,说明它很难被持续发现。这两种现象指向相反的处理方向。
物理隔离指活动页使用独立路由、独立构建入口和独立资源目录,长期知识内容不引用任何活动组件。实施动作可以这样落地:在构建配置里为活动单独设置入口,活动样式与脚本不进入知识页的公共 chunk;活动结束后直接下线该入口,而不是在公共包里留下死代码。
这个动作的结果会直接影响下一步:如果下线后知识页的构建体积没有变化,说明隔离生效,后续活动可以继续沿用同一模式;如果体积反而下降,说明此前活动资源一直被知识页共享,需要回头检查公共依赖的划分。假设某次活动页包含一个约 80KB 的动画库,隔离前它进入公共包,隔离后知识页首屏少下载这部分资源——这只是说明比较方法的假设例子,不代表任何真实项目的收益。
物理隔离的代价是活动页无法复用知识页已经建立的缓存和预加载。用户从知识页跳到活动页时,需要重新请求活动资源。因此它更适合入口集中在站内、用户对首屏等待容忍度较高的场景,不适合活动页本身就是搜索落地页的情况。
当活动页需要被搜索发现时,完全隔离会丢掉长期内容已经积累的内链和页面理解。更合理的做法是共享渲染骨架、路由约定和基础样式,只把活动特有的业务逻辑放进独立模块。这样知识页不会加载倒计时和抽奖逻辑,活动页又能继承长期层的导航、页脚和内链结构。
实施动作:把公共布局、排版基础和关键导航抽成共享层,活动业务代码通过动态导入按需加载;活动页在 HTML 中输出与长期内容一致的标题层级和主要链接,而不是只留一个空容器等脚本填充。结果如何影响下一步:如果活动页在关闭脚本后仍能看到主要内容和入口,说明骨架共享有效,可以继续把活动纳入长期信息架构;如果关闭脚本后页面几乎为空,说明承载方式仍偏向纯客户端渲染,需要先补齐服务端或静态输出的内容层。
这种做法的代价是共享层需要维护兼容性。活动业务变化快,共享骨架变化慢,两者节奏不一致时容易出现样式冲突。适用条件是团队能对共享层做版本约束,并且活动页确实有持续搜索价值。
无论选哪种方式,都需要一条可执行的边界:长期知识内容的公共包只保留导航、排版和基础交互;活动专属的动画、倒计时、抽奖、弹层进入活动包。可以用构建产物体积作为检查依据,而不是凭感觉判断。
这些检查只说明资源归属和内容可读性,不能单独证明抓取或排名会如何变化。抓取、索引和排名是不同环节,资源体积下降不等于页面一定被收录,活动页有内链也不等于一定获得排名。
有些活动页在结束后仍有搜索价值,例如年度榜单、系列专题。这类页面不应随活动下线而删除,而应转为长期知识内容的一部分:保留稳定 URL,补充与主题相关的长期内链,把临时倒计时和报名入口移除,只留下可长期阅读的主体内容。
判断依据是页面是否还能独立回答用户问题。如果去掉活动时间、奖品和报名按钮后,页面仍有可读的结论或清单,它就值得转入长期层;如果去掉这些元素后只剩一句口号,就应按短期活动处理,到期下线,避免留下无内容页面。这个判断决定了下一步是迁移还是清理,也决定了性能优化的资源应该投向公共包还是活动包。