目前应用发布终端常用的两种方式,pc和移动端,一些前端功能迭代发布时会因为缓存问题导致功能发布后,用户并没有获取到新发布的功能,pc可以通过清除缓存来解决,但是移动端,比如手机用户并不知道怎么清除缓存,导致一些前端新功能发布到手机后,用户没办法获取到新发布的功能。
我通过在路径中增加版本号来解决这个问题。比如:https://www.cnblogs.com/v1.0.0/taven/archive, 其中v1.0.0为增加的发布版本号
项目使用docker部署,下面展示一下具体的实现细节。
1.dockerfile文件
#Base Image
FROM hbs.xxx.com.cn/infra/centos-nginx:1.16.1
MAINTAINER xxx xxx@xxx.com.cn
RUN mkdir -p /data/app/aaa
#ADD mobile /data/app/aaa/bbb/
ADD mobile /data/app/aaa/bbb/v1.0.1/
#expose
EXPOSE 80
#workdir
WORKDIR /data/app/aaa
2.docker-compose.yml文件
version: "2"
services:
xxx-mr_h5:
restart: always
image: hbs.xxx.com.cn/xxx_sit/xxx-mr_h5:${ver}
container_name: xxx-mr_h5
ports:
- 8888:80
volumes:
- /apps/xxx-mr_h5/static.conf:/etc/nginx/conf.d/static.conf
- /apps/xxx-mr_h5/logs:/var/log/nginx
- /usr/local/bbb/index.html:/data/app/aaa/bbb/index.html
- /usr/local/bbb/static:/data/app/aaa/bbb/static
为什么这么部署呢? 是因为我们需要部署两个前端项目,原来的项目A和版本路由项目B,版本路由项目B的唯一功能就是做地址路由,将原来的访问地址处理为加上版本号(比如v1.0.1)的访问地址。这个版本号需要后端项目维护一个接口:功能是返回正确的版本号(需要自己维护发布版本号,还要考虑发布回归等情况),前端版本路由项目B中调用后端接口,处理原访问地址为加上版本号的访问地址即可。唯一稍微麻烦的地方就是原来的前端项目A每次发布时都需要在代码中将路径改为这次发布的版本号地址。