1. 用户自行清理浏览器缓存。
优点:清除浏览器缓存后可达到效果。
缺点:影响用户体验
2. 使用禁用缓存标签,实现禁用浏览器缓存。
优点:可达到效果。
缺点:每次请求页面都要重新请求,我们还是希望有缓存的
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
<meta http-equiv="Cache" content="no-cache">
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="0" />
3. 为js和css文件添加版本号。
优点:可达到效果。
缺点:给所有的静态资源都添加版本号参数,这个参数可以是时间戳或者随机数。处理方式的代码如下:
<link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/static/plugins/layui-v2.5.5/layui/css/layui.css?v=20200110052406">
<link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/static/css/style.css?v=20200110052406">
<link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/static/css/addStyle.css?v=20200110052406">
<link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/static/css/template/addStyle.css?v=20200110052406">
4.修改nginx 配置。(满足以下条件后有缓存可以修改nginx 配置文件)
背景:
1、使用nginx做代理
2、使用webpack等打包出一个唯一的入口文件index.html,或者其他方式的入口html文件
3、入口html文件中js已经使用hash后缀方式加载
=缺点:需要前端人员会配置nginx=
location ~ .*\.(htm|html)?$ {
#原来这样设置的不管用
#expires -1;
#现在改为,增加缓存
add_header Cache-Control "private, no-store, no-cache, must-revalidate, proxy-revalidate";
access_log on;
一、解决方案
其实浏览器缓存是有好处的,第一次访问网站会从服务器获取静态的资源,然后将静态资源在游览器中缓存,下次用户在访问时,就直接获取游览器的缓存的静态资源,加快响应速度。但是同样也有弊端,当你更新样式或者图片资源的时候,再次访问就不会获取最新修改的静态资源。
解决的方案有三种:
1、用户自行清理浏览器缓存。
2、使用禁用缓存标签,实现禁用浏览器缓存。
3、为js和css文件添加版本号。
本文主要介绍了nginx缓存以及清除缓存的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着微点阅读小编来一起学习学习吧。
缓存的基本思想是利用客户端访问的时间局限性,将客户端访问过的内容做一个副本,在一定时间内存放到本地,当改数据下次被访问时,不必连接到后端服务器反复去查询数据,而是由本地保存的副本响应数据。
保存在本地的这些副本具有一个过期时间,超过该时间将会更新。判断一个副本数据是否为过期数据的办法有很多,可以使用保留时间来判断,也可以使用数据完整度来判断。
许多Web服务器还具有校验功能,就是当某些副本数据过期以后,先向后端服务器发送校验请求,后端服务器对这些数据进行校验,如果发现原数据和副本没有差别
浏览器缓存(Browser Caching) 是为了加速浏览并节约网络资源,浏览器在用户磁盘上对最近请求过的文档进行存储。
nginx可以通过 expires 指令来设置浏览器的Header
语法: expires [time|epoch|max|off]
默认值: expires off
作用域: http, server, location
使用本指令可以控制HTTP应答中的“Expires”和“Cache-Control”的头标,(起到控制页面缓存的作用)。
可以在time值中使用正数或负数。“Expires”头标的值将通过当前系统时间加上您设定的 time 值来获得。
epoch 指定
如果您希望在使用 Nginx 作为前端时彻底禁用缓存,您可以在 Nginx 配置文件中添加以下内容:
location / {
add_header Cache-Control "no-cache, no-store, must-revalidate";
add_header Pragma "no-cache";
add_header Expires 0;
这样,当用...
这一篇记录一下Nginx作为Web服务器缓存,减少对应用服务器请求次数 ,各位看到此博客的小伙伴,如有不对的地方请及时通过私信我或者评论此博客的方式指出,以免误人子弟。多谢!
Nginx作为Web缓存服务器,它介于客户端和应用服务器之间,当用户通过浏览器访问一个URL时,web缓存服务器会去应用服务器获取要展示给用户的内容,将内容缓存到自己的服务器上,当下一次请求到来时,如果访问的是同一个URL,web缓存服务器就会直接将之前缓存的内容返回给客户端,而不是向应用服务器再次发送请求。web缓存降低了应用服务
NGINX可以从缓存中删除旧的和过期的缓存文件。删除过期的缓存内容是强制性的,以防止同时提供新旧版本的网页。收到包含自定义HTTP标头或HTTP PURGE方法的特殊"purge"请求后,将清除缓存。
配置缓存清除
让我们设置一个配置,该配置用于识别使用HTTP PURGE方法的请求并删除匹配的URL。
1.在http {}上下文中,添加一个新变量,例如$purge_method,该变量取决于$request_method变量:
http {
map $request_me
一个优秀的缓存策略可以缩短网页请求资源的距离,减少延迟,并且由于缓存文件可以重复利用,还可以减少带宽,降低网络负荷。
对于一个数据请求来说,可以分为发起网络请求、后端处理、浏览器响应三个步骤。
浏览器缓存可以帮助我们在第一和第三步骤中优化性能:比如说直接使用缓存而不发起请求,或者发起了请求但后端存储的数据和前端一致,那么就没有必要再将数据回传回来,这样就减少了响应数据。
缓存位置
浏览器缓存共有四种,且有一定的优先级,当所有缓存都没有命中时才回去进行网络请求。
Service Worker