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简单配置多个server的方法
Mar 31 Servers
Nginx的反向代理实例详解
Mar 31 Servers
nginx配置文件使用环境变量的操作方法
Jun 02 Servers
Kubernetes关键组件与结构组成介绍
Mar 31 Servers
如何通过cmd 连接阿里云服务器
Apr 18 Servers
Ubuntu Server 安装Tomcat并配置systemctl
Apr 28 Servers
Nginx 安装SSL证书完成HTTPS部署
Apr 28 Servers
服务器SVN搭建图文安装过程
Jun 21 Servers
Windows10安装Apache2.4的方法步骤
Jun 25 Servers
如何让你的Nginx支持分布式追踪详解
Jul 07 Servers
windows server2016安装oracle 11g的图文教程
Jul 15 Servers
django项目、vue项目部署云服务器的详细过程
Jul 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程序的国际化实现方法(利用gettext)
2011/08/14 PHP
PHP读取文本文件并逐行输出该行使用最多的字符与对应次数的方法
2016/11/25 PHP
浅谈PHP表单提交(POST&amp;GET&amp;URL编/解码)
2017/04/03 PHP
三个思路解决laravel上传文件报错:413 Request Entity Too Large问题
2017/11/13 PHP
javascript 表格排序和表头浮动效果(扩展SortTable)
2009/04/07 Javascript
Bootstrap源码解读下拉菜单(4)
2016/12/23 Javascript
不到200行 JavaScript 代码实现富文本编辑器的方法
2018/01/03 Javascript
Gulp实现静态网页模块化的方法详解
2018/01/09 Javascript
nodejs中Express与Koa2对比分析
2018/02/06 NodeJs
基于layui数据表格以及传数据的方式
2018/08/19 Javascript
在移动端使用vue-router和keep-alive的方法示例
2018/12/02 Javascript
解决vue动态下拉菜单 有数据未反应的问题
2020/08/06 Javascript
以一个投票程序的实例来讲解Python的Django框架使用
2016/02/18 Python
Python3.5 Pandas模块之DataFrame用法实例分析
2019/04/23 Python
python读取目录下所有的jpg文件,并显示第一张图片的示例
2019/06/13 Python
python分数表示方式和写法
2019/06/26 Python
详解python3中用HTMLTestRunner.py报ImportError: No module named 'StringIO'如何解决
2019/08/27 Python
解决django接口无法通过ip进行访问的问题
2020/03/27 Python
Python3自动生成MySQL数据字典的markdown文本的实现
2020/05/07 Python
基于Python+QT的gui程序开发实现
2020/07/03 Python
Python利用matplotlib绘制折线图的新手教程
2020/11/05 Python
CSS3 实现飘动的云朵动画
2020/12/01 HTML / CSS
html5实现九宫格抽奖可固定抽中某项奖品
2020/06/15 HTML / CSS
意大利简约的休闲品牌:Aspesi
2018/02/08 全球购物
英国最出名高街品牌:Forever Unique
2018/02/24 全球购物
瑞典香水、须后水和美容产品购物网站:Parfym-Klick.se
2019/12/29 全球购物
事业单位绩效考核实施方案
2014/03/27 职场文书
企业口号大全
2014/06/12 职场文书
营销计划书范文
2015/01/17 职场文书
关于学习的决心书
2015/02/05 职场文书
大学毕业生自我评价
2015/03/02 职场文书
2015年售票员工作总结
2015/04/29 职场文书
经典法律座右铭(50句)
2019/08/15 职场文书
详解nginx.conf 中 root 目录设置问题
2021/04/01 Servers
MySQL update set 和 and的区别
2021/05/08 MySQL
Python绘画好看的星空图
2022/03/17 Python