首页 > 系统相关 >nginx更新静态页面客户端缓存不刷新问题

nginx更新静态页面客户端缓存不刷新问题

时间:2023-04-10 14:13:44浏览次数:35  
标签:缓存 版本号 js nginx 刷新 静态 客户端

问题描述:

频繁部署静态资源,nginx自带缓存未刷新

通过ftp/sftp上传到nginx的静态页(尤其是打包好的单页应用),有可能遇到客户端缓存不刷新的问题,即使重启nginx都无效

客户端浏览器也有缓存,一般关闭进程(手机清理,注意某些app光按返回键退回桌面是不会结束进程的),强制刷新网页等方法可以刷新

解决措施: html本身可以通过meta设置禁止缓存
而html内引用的js如果内容有变化,则链接也应更新(添加类似?v=xxx的版本号),避免客户端从自己本地取js缓存 服务端nginx本身有缓存,可以用nginx -s reload刷新

nginx配置

location ~ .*\.(gif|html|jpg|jpeg|png|bmp|swf|js|css)$ {
root /project/jd/static/;
#禁止缓存,每次都从服务器请求
add_header Cache-Control no-store;
}

因为这里使用的是正则做匹配,优先级高于 ‘/’ ,所以静态资源就都走下面的location中去找资源了。

实测:未解决

前端页面设置

<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="0" />

实测:未解决

js、css加上版本号

<link rel="stylesheet" href="style.css?v=1.0.0">
<script src="main,js?v=1.0.0"></script>

问号后面的不起实际作用,仅当作后缀,让浏览器自动检测更新最新的css,js等静态文件。如果用问号加参数的方法,可以添加版本号等信息,同时可以刷新一下浏览器端的缓存。这样在使用静态文件的时候会方便很多,当然也可以修改资源的名称这里就不再说了。

问题延伸

但是JS文件或CSS过多的情况下需要一个一个的去修改版本号,会花费大量的时间,此时就需要版本号是动态获取的了

更换为从messages.properties中读取
<script type="text/javascript" th:src="@{/js/test/index.js(v=#{js.version})}"></script>

 

标签:缓存,版本号,js,nginx,刷新,静态,客户端
From: https://www.cnblogs.com/caisl/p/17302697.html

相关文章

  • ubuntu 20.04服务器 syslog客户端日志发送至深信服日志系统服务器中
    1.ubuntu设置Linux下syslog客户端配置:修改配置⽂件:vi/etc/rsyslog.conf在最后⼀⾏加⼊:*.*@192.168.190.50:514#将所有消息发送到该地址重启服务:#servicersyslogrestart查看服务状态#servicersyslog2.日志服务器设置添加源设置源名称----接入类型(syslog)---源IP(你......
  • Linux&Nginx16_Nginx反向代理6
    一、概念反向代理代理(ReverseProxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。首先我们先理解正向代理,如下图: ......
  • nginx
                                 ......
  • 【学习笔记】mybatis中的缓存介绍和使用
    文章目录介绍一级缓存和二级缓存让一级缓存失效的方法二级缓存的使用清空或者跳过二级缓存的3种方式介绍什么是缓存?缓存就是存储数据的一个地方(称作:Cache),当程序要读取数据时,会首先从缓存中获取,有则直接返回,否则从其他存储设备中获取,缓存最重要的一点就是从其内部获取数据的速度是......
  • 【学习笔记】在windows下进行基于TCP的本地客户端和服务端socket通信
    文章目录socket介绍java中使用socket基于tcp的socket通信使用ServerSocket类创建一个web服务器:(java)windows下的基于tcp的socket编程(c++写)InetAddress类的方法附录1TCPUDP附录2websocketsocket介绍Socket的英文原义是“孔”或“插座”。在编程中,Socket被称做套接字,是网络通......
  • nginx配置文件及虚拟主机
    最小配置nginx.conf去掉注释字段后剩余的字段#工作进程数量,配置为对应cpu核数量效果最好worker_processes1;events{#每个worker进程能创建的链接数量,默认即可worker_connections1024;}http{#引入响应头的Content-Type值includemime.t......
  • Nginx配置文件结构
    Nginx配置文件(conf/nginx.conf)整体分为三部分:*全局块和Nginx运行相关的全局配置*events和网络连接相关的配置*http块代理、缓存、日志记录、虚拟主机配置http全局块Server块Server全局块location块注:http......
  • Nginx
    Nginx介绍:Nginx是一款轻量级的web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。其特点是占有内存小,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx的网站有:百度、京东、新浪、网易、腾讯、淘宝等https://nginx.org/Nginx下载和安装......
  • Nginx的try_files指令详解
    try_files语法:try_filesfile…uri;或 try_filesfile…=code;默认值:无作用域:serverlocation语法解释:官方:Checkstheexistenceoffilesinthespecifiedorderandusesthefirstfoundfileforrequestprocessing;theprocessingisperformedinthecurr......
  • 开启 HTTP/3 & QUIC 在 Docker Compose+Nginx
    HTTP/3基于UDP的QUIC协议,多路复用安全传输HTTP/1.1和HTTP/2都将TCP用作其传输协议HTTP/3和QUIC具有很多优势:1.第一个请求的响应时间更短。在客户端和服务器之间以较少的往返次数协商连接,第一个请求会更快地到达服务器。2.改进了发生连接数据包丢失时的体验。HTT......