项目准备
这个博客使用纯 HTML 和 CSS,没有 Node 构建过程。仓库结构保持简单:首页在根目录,文章页按目录存放,公共样式在 assets 目录,404 页面放在根路径。这样部署平台不需要安装依赖,也不会因为构建环境变化产生差异。
site/ ├── index.html ├── 404.html ├── favicon.svg ├── robots.txt ├── sitemap.xml ├── assets/ │ └── styles.css ├── articles/ ├── archive/ └── about/
如果项目根目录就是 site,输出目录可以配置为当前目录;如果 site 是仓库子目录,则在平台里明确指定该目录。构建命令留空,可以减少部署时间和故障面。
部署流程
- 本地启动 HTTP 服务,检查首页、文章、归档、关于和 404。
- 确认所有链接使用统一的根路径或相对路径规则。
- 推送到 Git 仓库,让平台自动拉取。
- 在 EdgeOne Pages 中设置输出目录,构建命令留空。
- 绑定域名,按提示完成 DNS 接入。
- 发布后验证缓存头、安全头、备案链接和站点地图。
如果后续引入构建工具,建议在 CI 本地等价环境中先跑一次完整构建,并把产物目录作为唯一部署输入。平台只负责发布,不承担环境拼装职责,问题会更容易定位。
缓存分层设计
我的策略是让入口文档短缓存,指纹资源长缓存。HTML 更新频繁,需要尽快可见;CSS、JS、图片和字体基本不变,应该尽量留在边缘节点。
| 路径 | 缓存策略 | 原因 |
|---|---|---|
| / 与 /articles/ | 短 TTL,例如几分钟 | 新文章入口需要较快可见 |
| /assets/* | 长缓存,内容变化时换文件名 | 最大化边缘命中 |
| /sitemap.xml | 中等 TTL | 搜索引擎抓取不需要实时 |
| /404.html | 短缓存 | 避免错误状态被长期固定 |
发布后的验证
# 入口文档:确认状态码和跳转 curl -I https://example.com/ # 静态资源:确认缓存与压缩 curl -I https://example.com/assets/styles.css # 文章页:确认路径可访问 curl -I https://example.com/articles/edgeone-pages-deployment-caching/ # 404:确认自定义错误页生效 curl -I https://example.com/not-found/
检查响应时,我会关注状态码、Cache-Control、Content-Type、Content-Encoding、Vary 和平台命中标识。手机网络下再用浏览器无痕模式打开一次,可以排除本地缓存干扰。
域名与备案展示
面向国内用户提供服务的网站,需要完成备案并按要求展示备案号。本站把备案号放在全站页脚,并链接到工信部备案系统。个人博客保持纯内容浏览,不提供评论、私信、用户注册等内容功能,能降低合规复杂度。
绑定域名后,要确认 HTTPS 证书、跳转规则和 www 与裸域的一致性。建议先让一个域名稳定运行,再考虑别名域名,避免重复收录和缓存策略不一致。
回滚策略
静态站回滚很简单:保留上一次构建产物或 Git 版本,重新发布即可。为了避免 DNS 和缓存混杂,我会把代码回滚与缓存刷新分开处理,先恢复内容,再验证入口文档,最后必要时刷新少量 URL。
小结
EdgeOne Pages 适合这种无动态状态的静态博客:源码可版本化、部署可重复、资源就近分发。把缓存规则、验证命令和回滚步骤写清楚后,每次发文章只需要关注内容本身。