Nginx缓存设置案例详解


Posted in Servers onSeptember 15, 2021

在开发调试web的时候,经常会碰到因浏览器缓存(cache)而经常要去清空缓存或者强制刷新来测试的烦恼,提供下apache不缓存配置和nginx不缓存配置的设置。在常用的缓存设置里面有两种方式,都是使用add_header来设置:分别为Cache-Control和Pragma。

nginx:
location ~ .*\.(css|js|swf|php|htm|html )$ {
add_header Cache-Control no-store;add_header Pragma no-cache;
}

对于站点中不经常修改的静态内容(如图片,JS,CSS),可以在服务器中设置expires过期时间,控制浏览器缓存,达到有效减小带宽流量,降低服务器压力的目的。

以Nginx服务器为例:

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
#过期时间为30天,
#图片文件不怎么更新,过期可以设大一点,
#如果频繁更新,则可以设置得小一点。
expires 30d;
}
location ~ .*\.(js|css)$ {
expires 10d;
}

背景】:Expires是Web服务器响应消息头字段,在响应http请求时告诉浏览器在过期时间前浏览器可以直接从浏览器缓存取数据,而无需再次请求。

相关资料

1、Cache-control策略

Cache-Control与Expires的作用一致,都是指明当前资源的有效期,控制浏览器是否直接从浏览器缓存取数据还是重新发请求到服务器取数据。只不过Cache-Control的选择更多,设置更细致,如果同时设置的话,其优先级高于Expires。

http协议头Cache-Control

值可以是public、private、no-cache、no- store、no-transform、must-revalidate、proxy-revalidate、max-age

各个消息中的指令含义如下:

  • Public指示响应可被任何缓存区缓存。
  • Private指示对于单个用户的整个或部分响应消息,不能被共享缓存处理。这允许服务器仅仅描述当用户的部分响应消息,此响应消息对于其他用户的请求无效。
  • no-cache指示请求或响应消息不能缓存
  • no-store用于防止重要的信息被无意的发布。在请求消息中发送将使得请求和响应消息都不使用缓存。
  • max-age指示客户机可以接收生存期不大于指定时间(以秒为单位)的响应。
  • min-fresh指示客户机可以接收响应时间小于当前时间加上指定时间的响应。
  • max-stale指示客户机可以接收超出超时期间的响应消息。如果指定max-stale消息的值,那么客户机可以接收超出超时期指定值之内的响应消息。

Last-Modified/If-Modified-Since

  • Last-Modified/If-Modified-Since要配合Cache-Control使用。
  • Last-Modified:标示这个响应资源的最后修改时间。web服务器在响应请求时,告诉浏览器资源的最后修改时间。
  • If-Modified-Since:当资源过期时(使用Cache-Control标识的max-age),发现资源具有Last-Modified声明,则再次向web服务器请求时带上头 If-Modified-Since,表示请求时间。web服务器收到请求后发现有头If-Modified-Since 则与被请求资源的最后修改时间进行比对。若最后修改时间较新,说明资源又被改动过,则响应整片资源内容(写在响应消息包体内),HTTP 200;若最后修改时间较旧,说明资源无新修改,则响应HTTP 304 (无需包体,节省浏览),告知浏览器继续使用所保存的cache。

其最终达到的就是等效于设置这三类html缓存技术:

<meta http-equiv="pragma" content="no-cache"/>
<meta http-equiv="Cache-Control" content="no-cache, must-revalidate"/> 
<meta http-equiv="expires" content="0"/>

到此这篇关于Nginx缓存设置案例详解的文章就介绍到这了,更多相关Nginx缓存设置内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Servers 相关文章推荐
如何利用map实现Nginx允许多个域名跨域
Mar 31 Servers
fastdfs+nginx集群搭建的实现
Mar 31 Servers
提升Nginx性能的一些建议
Mar 31 Servers
JVM上高性能数据格式库包Apache Arrow入门和架构详解(Gkatziouras)
May 26 Servers
nginx反向代理配置去除前缀案例教程
Jul 26 Servers
解决xampp安装后Apache无法启动
Mar 21 Servers
OpenStack虚拟机快照和增量备份实现方法
Apr 04 Servers
基于Apache Hudi在Google云构建数据湖平台的思路详解
Apr 07 Servers
Tomcat执行startup.bat出现闪退的原因及解决办法
Apr 20 Servers
IIS服务器中设置HTTP重定向访问HTTPS
Apr 29 Servers
windows server2012 R2下安装PaddleOCR服务的的详细步骤
Sep 23 Servers
源码安装apache脚本部署过程详解
Sep 23 Servers
图文详解Nginx版本平滑升级方案
Sep 15 #Servers
Nginx配置文件详解以及优化建议指南
Sep 15 #Servers
学习nginx基础知识
Nginx location 和 proxy_pass路径配置问题小结
Sep 04 #Servers
Nginx使用Lua模块实现WAF的原理解析
Nginx部署vue项目和配置代理的问题解析
centos8安装nginx1.9.1的详细过程
Aug 02 #Servers
You might like
php float不四舍五入截取浮点型字符串方法总结
2013/10/28 PHP
无需数据库在线投票调查php代码
2016/07/20 PHP
Linux系统中为php添加pcntl扩展
2016/08/28 PHP
thinkPHP中配置的读取与C方法详解
2016/12/05 PHP
关于图片验证码设计的思考
2007/01/29 Javascript
JS是否可以跨文件同时控制多个iframe页面的应用技巧
2007/12/16 Javascript
jQuery.clean使用方法及思路分析
2013/01/07 Javascript
实例说明为什么不要行内使用javascript
2014/04/18 Javascript
node.js中的fs.chmodSync方法使用说明
2014/12/18 Javascript
JavaScript中的数值范围介绍
2014/12/29 Javascript
nodejs批量修改文件编码格式
2015/01/22 NodeJs
angularJS 中input示例分享
2015/02/09 Javascript
jQuery实现获取绑定自定义事件元素的方法
2015/12/02 Javascript
JS简单实现String转Date的方法
2016/03/02 Javascript
AngularJS入门教程之AngularJS表达式
2016/04/18 Javascript
vue指令以及dom操作详解
2017/03/04 Javascript
vue 中 elment-ui table合并上下两行相同数据单元格
2019/12/26 Javascript
Angular之jwt令牌身份验证的实现
2020/02/14 Javascript
jQuery实现中奖播报功能(让文本滚动起来) 简单设置数值即可
2020/03/20 jQuery
[52:07]完美世界DOTA2联赛PWL S3 LBZS vs access 第二场 12.10
2020/12/13 DOTA
Sanic框架请求与响应实例分析
2018/07/16 Python
pytorch索引查找 index_select的例子
2019/08/18 Python
Python实现微信中找回好友、群聊用户撤回的消息功能示例
2019/08/23 Python
使用Python制作一个打字训练小工具
2019/10/01 Python
python 实现一个反向单位矩阵示例
2019/11/29 Python
Python简单实现区域生长方式
2020/01/16 Python
关于tf.nn.dynamic_rnn返回值详解
2020/01/20 Python
python mongo 向数据中的数组类型新增数据操作
2020/12/05 Python
详解HTML5 Canvas绘制不规则图形时的非零环绕原则
2016/03/21 HTML / CSS
美国正宗奢华复古手袋、珠宝及配饰网站:What Goes Around Comes Around
2018/07/21 全球购物
值类型与引用类型有什么不同?请举例说明?并分别列举几种相应的数据类型
2015/10/24 面试题
班主任经验交流会主持词
2014/04/01 职场文书
施工安全承诺书
2014/05/22 职场文书
银行求职自荐信范文
2015/03/04 职场文书
2015年国庆节标语大全
2015/07/30 职场文书
党校团干班培训心得体会
2016/01/06 职场文书