定义

覆盖式:新版本会覆盖上一个版本;
非覆盖式:每个版本共存;

优缺点

覆盖式:节省存储空间,但不容易做版本回退;
非覆盖式:占用大量存储空间,无缝切换版本;

适用场景

覆盖式:强调系统一致性,不接受特定版本的定制、维护;
非覆盖式:强调风险控制,或者有版本定制的需求;

实现方式

覆盖式发布比较常见,一般是新版本验收后,推送到远端仓库,通过CI/CD或手动部署的方式,先清理服务器静态文件托管目录,再将构建后的资源移动到该目录。

非覆盖式的重点是多版本共存,一般以版本号来区分,确定用户想访问的版本的常见实现如下:

  1. URL Segment,例如https://xxx.xxx.com/1.2.1/app
  2. URL Search String,例如https://xxx.xxx.com/app?version=1.2.1
  3. 自定义HTTP首部,例如X-App-Version: 1.2.1

非覆盖式还可以根据不同客户来区分版本,这种涉及权限校验的实现就更多了,具体要看业务需求。但总的来说,非覆盖式回退版本的成本是远低于覆盖式的。