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的rewrite模块详解
Mar 31 Servers
nginx搭建图片服务器的过程详解(root和alias的区别)
Mar 31 Servers
提升Nginx性能的一些建议
Mar 31 Servers
apache基于端口创建虚拟主机的示例
Apr 22 Servers
windows下快速安装nginx并配置开机自启动的方法
May 11 Servers
Rhit高效可视化Nginx日志查看工具
Nov 01 Servers
使用kubeadm命令行工具创建kubernetes集群
Mar 31 Servers
nginx搭建NFS网络文件系统
Apr 14 Servers
Apache SeaTunnel实现 非CDC数据抽取
May 20 Servers
Nginx开源可视化配置工具NginxConfig使用教程
Jun 21 Servers
Windows server 2003卸载和安装IIS的图文教程
Jul 15 Servers
Windows7下FTP搭建图文教程
Aug 05 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等比例缩放图片
2016/10/12 PHP
详解PHP版本兼容之openssl调用参数
2018/07/25 PHP
javascript js cookie的存储,获取和删除
2007/12/29 Javascript
js实现俄罗斯方块小游戏分享
2014/01/31 Javascript
nodejs命令行参数处理模块commander使用实例
2014/09/17 NodeJs
解决Jquery向页面append新元素之后事件的绑定问题
2015/03/16 Javascript
jQuery鼠标事件汇总
2015/08/30 Javascript
浅谈JavaScript超时调用和间歇调用
2015/08/30 Javascript
jQuery实现批量判断表单中文本框非空的方法(2种方法)
2015/12/09 Javascript
jQuery中JSONP的两种实现方式详解
2016/09/26 Javascript
使用Vue开发动态刷新Echarts组件的教程详解
2018/03/22 Javascript
node使用mysql获取数据库数据中文乱码问题的解决
2019/12/02 Javascript
[01:04:05]Mineski vs TNC 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
python使用PyV8执行javascript代码示例分享
2013/12/04 Python
决策树的python实现方法
2014/11/18 Python
Python单元测试框架unittest简明使用实例
2015/04/13 Python
python基于twisted框架编写简单聊天室
2018/01/02 Python
解决python大批量读写.doc文件的问题
2018/05/08 Python
Tensorflow实现卷积神经网络的详细代码
2018/05/24 Python
Python2.7实现多进程下开发多线程示例
2019/05/31 Python
将python运行结果保存至本地文件中的示例讲解
2019/07/11 Python
django数据关系一对多、多对多模型、自关联的建立
2019/07/24 Python
基于python实现把图片转换成素描
2019/11/13 Python
Python读取表格类型文件代码实例
2020/02/17 Python
浅谈pytorch中torch.max和F.softmax函数的维度解释
2020/06/28 Python
python ssh 执行shell命令的示例
2020/09/29 Python
用python计算文件的MD5值
2020/12/23 Python
移动端解决悬浮层(悬浮header、footer)会遮挡住内容的3种方法
2015/03/27 HTML / CSS
巴西最大的家具及装饰用品店:Mobly
2017/10/11 全球购物
丝芙兰香港官网:Sephora香港
2018/03/13 全球购物
软件测试面试题
2014/01/05 面试题
2014年重阳节老干部座谈会局领导发言稿
2014/09/25 职场文书
2014年学校安全工作总结
2014/11/13 职场文书
骨干教师考核评语
2014/12/31 职场文书
Lakehouse数据湖并发控制陷阱分析
2022/03/31 Oracle
mysql通过group by分组取最大时间对应数据的两种有效方法
2022/09/23 MySQL