观点与经验 / 发布排查

官网内容更新不生效,沿着发布链路找到断点

编辑说稿件已保存,开发说检查已通过,访问官网却仍是旧文章。针对静态企业网站,按源稿、构建产物、生产版本和公开响应逐段核对,可以更准确地找到负责处理的环节,并用可访问的网址确认更新确实完成。

多搭合肥网站开发服务发布于 更新于

“今天的任务完成了”可能只意味着检查过服务器,也可能意味着文稿已经保存。要确认文章上线,运营人员需要的是一个能在正式域名打开、正文确实更新的网址。

先拿到本次文章的标题、目标网址和一段新增正文,再逐层对照。不要只凭文件修改时间、任务绿色勾号或首页能打开,就认定内容已经发布。

静态网站的稿件,需要经过构建和部署

对于采用预渲染的静态网站,编辑保存的 Markdown 等源文件,通常还要生成访客能访问的页面。以 Astro 为例,官方部署指南将本地构建与上传发布分为两个步骤,默认构建目录是 dist/,项目也可以配置其他目录。开发电脑上的预览正常,并不能单独证明正式服务器已经更新。Astro 部署指南

如果官网接入了自动发布,应让维护人员确认这次修改是否真的触发了构建,构建读取的是哪一份内容,以及发布是否完成。CMS 动态渲染的网站链路可能不同,不能直接照搬静态目录的判断方式。

用观察结果定位下一位处理人

下面是我们建议采用的排查顺序。每次只沿着已有证据向后检查,可以减少编辑、开发与运维之间来回转述。

看到的现象 下一步核对什么 建议由谁处理
更新报告没有标题和文章网址 当天究竟是写了文章、修改旧文,还是只做监测 内容负责人
源稿存在,构建目录没有对应页面 草稿状态、站点归属、内容加载规则和构建报错 开发人员
构建目录有新正文,生产目录仍是旧正文 上传记录、发布目标和服务器正在使用的版本 发布维护人员
服务器新版本已就绪,正式网址仍返回旧正文 域名指向、实际服务目录、代理或缓存路径 运维人员
直接打开文章正常,栏目里却找不到 文章归类、列表筛选、分页和站内入口 开发与内容负责人

如果某一层根本没有产出,就先处理该层。例如没有新稿时,清理缓存不会让文章出现;文章被误标为草稿时,反复上传同一份构建产物也不会补出页面。

“上传成功”还要与正在服务的版本对上

一些部署方式会先上传到新版本目录,再切换网站入口。此时目录存在只是中间状态,需要核对正式域名实际读取的位置。NGINX 的 root、alias 与 try_files 决定请求如何映射到文件;其中 try_files 按配置顺序检查文件或目录,找到后继续处理请求。NGINX 请求与文件映射文档

建议把“目标域名、版本编号、切换结果”放在同一份发布记录里。如果部署的是多个业务站,分别核对每个站点;一个域名已经更新,不代表其他域名也使用了同一批产物。检查失败时,先定位失败站点和当前版本,再决定重试或回退,避免用一句“部署完成”掩盖部分成功。

只有证据指向缓存,才处理缓存

当生产目录和正式网址的响应内容不一致时,可以请维护人员比对源站与经过代理后的响应,检查是否存在浏览器、CDN 或反向代理缓存。刷新浏览器只能帮助排除部分客户端因素,不能证明所有访问路径都已更新。

缓存策略应区分 HTML 和带版本标识的静态资源。MDN 说明,no-cache 允许存储,但复用前需要验证;no-store 是禁止存储,两者含义不同。不要为了让一次文章更新生效,就把全站图片、字体和样式的缓存长期关闭。MDN HTTP 缓存指南

看到 304,能不能认定更新失败?

不能。304 Not Modified 是条件请求的验证结果,通常没有正文,浏览器会复用已保存的内容;它不是文章不存在的状态码。维护人员应把请求中的 If-None-Match、响应中的 ETag 和实际显示的正文放在一起核对。如果服务器判断资源已经变化,应返回新正文及相应的验证标识。MDN 条件请求与缓存验证

实际排查时,请维护人员先发起一次不带条件请求头的正式网址请求,保存响应正文,查找本次新增的那段文字。若这份正文已经更新,而用户看到的仍是旧内容,再比较用户请求经过的缓存路径;若正文仍旧,就继续核对该响应来自哪个生产版本。单看 200 或 304 都不足以完成内容验收,也不要把 no-cache 理解为每次必定返回 200:验证后仍可能返回 304。

给运营一份能复查的发布结果

一次内容交付可以用很短的记录说明白:新增文章几篇、实质修改旧文几篇、正式网址是什么、访客现在能看到哪段新内容、何时完成验证,以及仍有哪些失败项。没有新增时直接写零,并说明实际做了什么,不把检查时间填成发布时间。

对于计划允许搜索引擎发现的新页面,还应核对栏目入口、规范地址和站点地图。站点地图出现网址只能证明这一发布入口已更新,不能当作搜索引擎已经收录的凭据。

如果目前连谁负责最后验证都不清楚,可先阅读网站日常维护责任如何划分,再把上述发布凭据加入双方的维护约定。

参考资料

  1. https://docs.astro.build/en/guides/deploy/
  2. https://nginx.org/en/docs/http/ngx_http_core_module.html
  3. https://developer.mozilla.org/en-US/docs/Web/HTTP/Guides/Caching