如何实现静态首页新版本的午夜定时自动发布?
嘿,这个需求其实挺常见的,我来给你拆解几个靠谱的方案,你可以根据自己的部署环境来选:
方案一:用静态站点托管平台的内置调度功能(最省心)
如果你用Netlify、Vercel这类专门托管静态站点的平台,它们大多自带发布调度功能,不用自己折腾脚本:
- 先把新首页的代码推到一个单独的分支(比如
new-homepage),让平台生成部署预览,确认页面没问题 - 在平台后台找到「计划部署」(Scheduled Deployments)或者类似的选项
- 设置执行时间为午夜,注意时区! 很多平台默认用UTC时间,要换算成你需要的本地时区(比如北京时间是UTC+8,那UTC的16点就是北京时间的0点)
- 保存后,平台会自动在指定时间把这个预览部署切换为生产环境的首页
方案二:自己搭服务器?用Cron定时任务+文件替换
如果是自己的VPS/物理服务器托管静态文件,用系统的定时任务就能搞定:
- 提前把新首页文件准备好,比如命名为
index-new.html,放在服务器的备份目录(比如/var/www/html/backup/) - 写一个简单的替换脚本
swap-homepage.sh:
#!/bin/bash # 备份旧首页,加上日期方便回滚 cp /var/www/html/index.html /var/www/html/backup/index-old-$(date +%Y%m%d).html # 替换为新首页 cp /var/www/html/backup/index-new.html /var/www/html/index.html
- 给脚本加执行权限:
chmod +x swap-homepage.sh - 编辑Cron任务:运行
crontab -e,添加一行:
0 0 * * * /path/to/swap-homepage.sh
这行的意思是每天0点0分执行替换脚本。记得把/path/to/换成脚本实际的存放路径,还要确保执行脚本的用户有读写网站目录的权限。
方案三:用CI/CD工具调度发布(适合代码托管在Git平台的场景)
如果你的代码存在GitHub/GitLab上,用GitHub Actions或者GitLab CI来做定时发布也很灵活:
- 把新首页的代码合并到一个候选发布分支(比如
release-candidate) - 在GitHub上创建一个Workflow文件(
.github/workflows/scheduled-deploy.yml),示例内容如下:
name: Scheduled Homepage Deploy # 触发条件:每天午夜UTC时间,加上手动触发方便测试 on: schedule: - cron: '0 0 * * *' workflow_dispatch: jobs: deploy: runs-on: ubuntu-latest steps: - name: 拉取候选分支代码 uses: actions/checkout@v4 with: ref: release-candidate - name: 部署到生产环境 # 这里替换成你的实际部署命令,比如用rsync传到服务器,或者调用托管平台的API run: | rsync -avz --delete ./static-files/ your-user@your-server-ip:/var/www/html/
- 提交这个文件到仓库,GitHub会自动在每天午夜执行部署任务,把新首页推到生产环境
几个重要的注意事项
- 提前测试! 不管用哪个方案,先手动触发或者设置一个近的时间(比如5分钟后)测试一遍,确保发布流程正常,页面能正确替换
- 备份旧页面! 替换前一定要备份,万一新页面有问题,能快速回滚到旧版本
- 时区别搞错! 很多工具默认用UTC时间,一定要换算成你需要的本地时区,不然发布时间会偏差
内容的提问来源于stack exchange,提问作者lorenzo
相关产品推荐
相关产品推荐

