观点与经验 / 技术方案

用更新方式和动态功能选择网站架构

公开展示内容、编辑工作流和在线业务处理需要不同的能力。先列内容负责人、发布频率、预览方式和动态功能,再判断采用静态构建、内容后台或服务端处理的组合,避免为技术名词选型。

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

技术选型可以从两个问题开始:网站上哪些内容需要经常变化,谁负责把变化发布出去。产品介绍按月维护、运营每天录入资料、用户在线提交订单,三者需要的工作流不同。

框架名称不能替代这些判断。先画出编辑到发布的路径,再核对动态功能,通常更容易发现方案里遗漏的工作。

展示、编辑和业务处理分开看

需求 可以评估的实现方式 需要补充确认
公开介绍与少量文章 静态构建后部署页面 修改由谁完成,构建与发布如何触发
多人编辑产品或文章 内容后台配合静态构建或动态渲染 草稿、权限、预览与发布时间
登录后业务操作 服务端接口与数据存储 身份、权限、异常处理和维护责任

这几类方式可以组合。静态页面可以配合独立表单接口,内容后台也可以把公开文章交给构建流程发布。“有后台”和“页面静态输出”并不互斥。

静态构建的重点是发布链路

以 Astro 为例,官方部署说明介绍了构建与输出部署。采用这种方式时,内容更新需要确保新的构建真正到达正式环境;编辑保存成功,不一定意味着公开页面已经改变。

立项时安排一次演示:修改内容、查看预览、执行发布、打开正式网址。开发负责与运营自主发布是不同的服务安排,应把操作权限和故障处理人提前确认。

动态功能要单独评估

咨询、搜索、会员或交易涉及请求处理时,需要明确由哪个服务接收、数据存在哪里、失败后怎样反馈。例如表单不能只依赖浏览器验证输入,MDN 的表单验证文档说明了服务端检查的必要性。

不要因为网站主体是展示页,就把这些接口的部署与维护遗漏在报价之外。也不必为了少数动态功能,把所有公开内容都改成同一种实现方式。

咨询表单要验收两道检查

浏览器提示“邮箱格式不正确”,只能说明页面上的检查起作用。MDN 表单验证指南指出,客户端校验可以被绕过,服务端仍需验证提交的数据。因此,采购方案除了写“包含咨询表单”,还应明确接口校验与错误反馈由谁实现。

可以在约定的测试环境安排一次联合验收:运营在页面中留空必填项或填写错误格式,检查提示是否指出可改正的问题;开发再通过接口提交同类无效数据,确认服务器拒绝,而非照常保存为有效咨询。两条路径应分别留结果,不能用浏览器截图替代接口验证。这是项目验收示例,不是对本站客户系统已完成测试的声明。

数据被拒绝后,还要让用户知道下一步该改哪个字段,并能修正后再次提交。建议把字段规则、拒绝响应和页面反馈交给同一份约定维护;如果前端允许而服务端拒绝,应先核对双方规则,避免只删除服务端检查来让演示通过。

缓存策略要匹配内容

图片、样式和公开文章可以有不同的缓存安排。按 MDN 的 HTTP 缓存说明,响应复用与重新验证影响用户何时看到内容变化。涉及个人信息的响应,还需要与公开页面分开处理缓存边界。

如果官网增加了会员资料或订单查询,不能直接沿用公开文章的缓存规则。上述 MDN 文档区分了三种含义:private 限制共享缓存保存响应,但允许浏览器私有缓存;no-cache 要求复用前重新验证,并不禁止存储;需要禁止 HTTP 缓存保存响应时才使用 no-store。仅有登录 Cookie,也不能替代明确的缓存策略。

架构评审可以要求开发方标出哪些响应包含个人数据、经过哪些 CDN 或反向代理,以及各层由谁配置。建议在测试账号中分别请求同一路径,检查返回身份、响应头和共享缓存命中情况;这是一项验收建议,不能只凭某个响应头就宣布隔离已通过。托管缓存可能有自己的覆盖规则,需要一并核对实际配置;缓存限制也不能替代服务端身份与权限校验。

如果问题是公开文章保存后仍未显示,应先按内容更新未生效的排查路径核对构建、正式版本与响应正文,不要把所有页面统一改成禁止缓存来掩盖发布环节的问题。

评估方案时检查内容更新后如何验证、静态资源如何换版,以及异常时如何恢复。对于客户,最终可检查的是编辑能否完成工作、访客能否正常使用、维护人员能否接手。技术名称服务于这些目标,不是交付结果本身。

参考资料

  1. https://docs.astro.build/en/guides/deploy/
  2. https://developer.mozilla.org/en-US/docs/Web/HTTP/Guides/Caching
  3. https://developer.mozilla.org/en-US/docs/Learn_web_development/Extensions/Forms/Form_validation