现在浏览器或者系统访问网页都会有自己的一套缓存机制,这就可能会导致前端代码已经更新了,但是用户还是访问了之前的缓存。
这里介绍下用nginx
处理这个问题的方法,这里配置html
和htm
文件不缓存。
server {
listen 80;
server_name test.exmaple.cn;
location / {
# 配置页面不缓存html和htm结尾的文件
if ($request_filename ~* .*\.(?:htm|html)$)
{
add_header Cache-Control "private, no-store, no-cache, must-revalidate, proxy-revalidate";
}
root /web/;
index index.html;
try_files $uri $uri/ /index.html =404;
}
}
上面我们只配置了不缓存html
和htm
,js
和css
等文件没有做处理,是因为我们前端编译发布代码时,如果某个js
或css
有更新,会自动在文件名上加时间戳、哈希值,这样一发新版时,只要客户端请求了新版的html
,就会自动找到新的js
、css
,没有更新的js
、css
还会继续用缓存,这样既不会太大的影响网页的访问速度,也能保证更新的代码不走缓存。