Vue项目发布到服务器上面每次新发布,都有缓存不生效怎么办?

每次把修改后的vue项目build生产的打包文件丢到服务器后,发现还是上一次的效果,新修改的不起效,每次都需要ctrl+F5强制刷新页面,为啥?

vue cli不是给静态资源css、js、img自动加了哈希么,怎么还会有缓存?

经过多方调试,发现是因为入口文件index.html需要在服务器端设置禁止缓存。

window服务器设置IIS禁用html缓存

  1. 找到对应项目,切换到内容视图,选择index.html,设置http相应标头

     添加`Cache-Control`,值为:`no-cache`
    复制代码
  2. 设置常用标头

     设置常用http响应头,勾选 使WEB内容过期 》立即, 确定保存
    复制代码

Linux服务器设置nginx禁用html缓存

只配置了不缓存html和htm,js,css等文件没有做处理,是因为我们前端编译发布代码时,如果某个js或css有更新,会自动在文件名上加时间戳、哈希值,这样一发新版时,只要客户端请求了新版的html,就会自动找到新的js、css,没有更新的js、css还会继续用缓存,这样既不会太大的影响网页的访问速度,也能保证更新的代码不走缓存。

server {
        listen       80;
        server_name  test.exmaple.cn;
 
 
        location / {
                if ($request_filename ~* .*\.(?:htm|html)$)  ## 配置页面不缓存html和htm结尾的文件
                {
                   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;
        }
}
复制代码

暴力禁止所有静态资源缓存

location ~.*\.(js|css|html|png|jpg)$
{
   add_header Cache-Control no-cache;
}  
复制代码
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享