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实现反向代理
Sep 20 Servers
nginx简单配置多个server的方法
Mar 31 Servers
Nginx设置日志打印post请求参数的方法
Mar 31 Servers
Nginx源码编译安装过程记录
Nov 17 Servers
Windows Server 2019 域控制器安装图文教程
Apr 28 Servers
解决IIS7下无法绑定https主机的问题
Apr 29 Servers
V Rising 服务器搭建图文教程
Jun 16 Servers
解决Git推送错误non-fast-forward的方法
Jun 25 Servers
Nginx报404错误的详细解决方法
Jul 23 Servers
Nginx 502 bad gateway错误解决的九种方案及原因
Aug 14 Servers
nginx配置指令之server_name的具体使用
Aug 14 Servers
zabbix如何添加监控主机和自定义监控项
Aug 14 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
安健A254立体声随身听的分析与打磨
2021/03/02 无线电
PHP制作百度词典查词采集器
2015/01/29 PHP
jQuery EasyUI API 中文文档 可调整尺寸
2011/09/29 Javascript
基于JavaScript 类的使用详解
2013/05/07 Javascript
js获取checkbox复选框选中的选项实例
2014/08/24 Javascript
详细解读JavaScript的跨浏览器事件处理
2015/08/12 Javascript
JavaScript Array对象详解
2016/03/01 Javascript
Vue 2.0在IE11中打开项目页面空白的问题解决
2017/07/16 Javascript
微信小程序使用checkbox显示多项选择框功能【附源码下载】
2017/12/11 Javascript
10个经典的网页鼠标特效代码
2018/01/09 Javascript
webpack优化的深入理解
2018/12/10 Javascript
ES6 Generator函数的应用实例分析
2019/06/26 Javascript
JS回调函数原理与用法详解【附PHP回调函数】
2019/07/20 Javascript
jquery实现轮播图特效
2020/04/12 jQuery
node.js +mongdb实现登录功能
2020/06/18 Javascript
jQuery实现容器间的元素拖拽功能
2020/12/01 jQuery
Python生成不重复随机值的方法
2015/05/11 Python
Python实现网络端口转发和重定向的方法
2016/09/19 Python
python爬虫的工作原理
2017/03/05 Python
单利模式及python实现方式详解
2018/03/20 Python
Django 多语言教程的实现(i18n)
2018/07/07 Python
python实现括号匹配的思路详解
2018/08/23 Python
利用python GDAL库读写geotiff格式的遥感影像方法
2018/11/29 Python
python用post访问restful服务接口的方法
2018/12/07 Python
Python List cmp()知识点总结
2019/02/18 Python
Python装饰器如何实现修复过程解析
2020/09/05 Python
Python用requests库爬取返回为空的解决办法
2021/02/21 Python
css3边框_动力节点Java学院整理
2017/07/11 HTML / CSS
哥德堡通行证:Gothenburg Pass
2019/12/09 全球购物
物流合作计划书
2014/01/10 职场文书
运动会通讯稿50字
2014/01/30 职场文书
同学聚会主持词
2014/03/18 职场文书
政风行风评议工作总结
2014/10/21 职场文书
抢劫罪辩护词
2015/05/21 职场文书
运动会通讯稿600字
2015/07/20 职场文书
2016高考冲刺决心书
2015/09/23 职场文书