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 相关文章推荐
阿里云Nginx配置https实现域名访问项目(图文教程)
Mar 31 Servers
Nginx反向代理配置的全过程记录
Jun 22 Servers
nginx安装以及配置的详细过程记录
Sep 15 Servers
Linux下使用C语言代码搭建一个简单的HTTP服务器
Apr 13 Servers
Tomcat项目启动失败的原因和解决办法
Apr 20 Servers
Windows server 2012搭建FTP服务器
Apr 29 Servers
阿里云国际版 使用Nginx作为HTTPS转发代理服务器
May 11 Servers
git stash(储藏)的用法总结
Jun 25 Servers
Nginx如何获取自定义请求header头和URL参数详解
Jul 23 Servers
Nginx使用ngx_http_upstream_module实现负载均衡功能示例
Aug 05 Servers
nginx配置指令之server_name的具体使用
Aug 14 Servers
Elasticsearch6.2服务器升配后的bug(避坑指南)
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
文章推荐系统(三)
2006/10/09 PHP
php UTF-8、Unicode和BOM问题
2010/05/18 PHP
php HtmlReplace输入过滤安全函数
2010/07/03 PHP
十幅图告诉你什么是PHP引用
2015/02/22 PHP
PHP析构函数destruct与垃圾回收机制的讲解
2019/03/22 PHP
Dojo 学习要点
2010/09/03 Javascript
Jquery实现列表(隔行换色,全选,鼠标滑过当前行)效果实例
2013/06/09 Javascript
js向上无缝滚动,网站公告效果 具体代码
2013/11/18 Javascript
JavaScript中的连字符详解
2013/11/28 Javascript
JavaScript事件委托实例分析
2015/05/26 Javascript
jQuery实现瀑布流布局详解(PC和移动端)
2020/09/01 Javascript
《JavaScript高级编程》学习笔记之object和array引用类型
2015/11/01 Javascript
jQuery实现侧浮窗与中浮窗切换效果的方法
2016/09/05 Javascript
easyui tree带checkbox实现单选的简单实例
2016/11/07 Javascript
js模拟微博发布消息
2017/02/23 Javascript
使用openSpeDiv方法实现Ecshop登录弹窗框效果
2017/03/13 Javascript
vue router使用query和params传参的使用和区别
2017/11/13 Javascript
解决vuecli3.0热更新失效的问题
2018/09/19 Javascript
详解几十行代码实现一个vue的状态管理
2019/01/28 Javascript
vue图片上传本地预览组件使用详解
2019/02/20 Javascript
Vue.js如何使用Socket.IO的示例代码
2019/09/05 Javascript
python爬取NUS-WIDE数据库图片
2016/10/05 Python
python中关于for循环的碎碎念
2017/06/30 Python
python docx 中文字体设置的操作方法
2018/05/08 Python
Python Pandas批量读取csv文件到dataframe的方法
2018/10/08 Python
Linux上使用Python统计每天的键盘输入次数
2019/04/17 Python
使用python接入微信聊天机器人
2020/03/31 Python
Python 静态方法和类方法实例分析
2019/11/21 Python
使用tensorflow进行音乐类型的分类
2020/08/14 Python
Lenox官网:精美的瓷器&独特的礼品
2017/02/12 全球购物
Foot Locker英国官网:美国知名运动产品零售商
2019/02/21 全球购物
日语专业毕业生自荐信
2013/11/11 职场文书
爱岗敬业演讲稿范文
2014/01/14 职场文书
人事专员工作职责
2014/02/22 职场文书
2019个人工作自我评价范文(3篇)
2019/09/19 职场文书
React Native项目框架搭建的一些心得体会
2021/05/28 Javascript