亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

nginx 緩存(11)

標簽:
Nginx

获取全套nginx教程,请访问瓦力博客

介绍nginx是如何设置缓存之前,我们还是先聊聊web浏览器的缓存机制。

1.浏览器缓存

浏览器的缓存机制也就是我们说的HTTP缓存机制,其机制是根据HTTP报文的头信息进行识别的(如:Expires,Cache-control等)。

Expires

Expires是HTTP/1.0控制网页缓存的字段,其值为服务器返回该请求结果缓存的到期时间,即再次发起该请求时,如果客户端的时间小于Expires的值时,直接使用缓存结果。

Expires是HTTP/1.0的字段,但是现在浏览器默认使用的是HTTP/1.1,那么在HTTP/1.1中网页缓存还是否由Expires控制?

到了HTTP/1.1,Expire已经被Cache-Control替代,原因在于Expires控制缓存的原理是使用客户端的时间与服务端返回的时间做对比,那么如果客户端与服务端的时间因为某些原因(例如时区不同;客户端和服务端有一方的时间不准确)发生误差,那么强制缓存则会直接失效,这样的话强制缓存的存在则毫无意义,那么Cache-Control又是如何控制的呢?

Cache-Control

在HTTP/1.1中,Cache-Control是最重要的规则,主要用于控制网页缓存,主要取值为

参数 说明
public 所有内容都将被缓存(客户端和代理服务器都可缓存)
private 所有内容只有客户端可以缓存,Cache-Control的默认取值
no-cache 客户端缓存内容,但是是否使用缓存则需要经过协商缓存来验证决定
no-store 所有内容都不会被缓存,即不使用强制缓存,也不使用协商缓存
max-age=xxx (xxx is numeric) 缓存内容将在xxx秒后失效

校验过期机制

-|-
校验是否过期|Expires、Cache-Control(max-age)|
协议中Etag头信息校验|Etag|
Last-Modified头信息校验|Last-Modified|

首先,校验本地的缓存是否过期,本地缓存校验是否过期依赖http头信息中ExpiresCache-Control字段。这两个字段都会起到同一个作用,区别就是协议不同,Expires是1.0协议,Cache-Control
是1.1协议。如果本地文件过期,就会校验Etag字段和Last-Modified字段。EtagLast-Modified的共同点就是会向服务器进行校验。

Last-Modified记录的是一个具体时间,当服务器的文件更新后,服务器上的文件时间就会和缓存中Last-Modified记录的时间不一致,这样服务器会将更新后的文件返回给客户端

Etag记录的是一个字符串,因为Last-Modified记录的是一个时间,当服务器更新的时间是秒级别的时候,这个时候靠Last-Modified就不能够检测文件是否更新。所以Etag的出现就是为解决这个问题。

ssl

2.expires

expires的原理就是给Response Headers头信息中添加Cache-Control、Expires信息

Syntax: expires [modified] time;
	expires epoch | max | off;
Default: expires off;
Context: http,server,location,if in location

示例配置

location ~ .*\.(html | htm)$ {
	root /opt/app/code;
	expires 24h;
}

访问页面,打开调试工具,看到Response Headers头信息中出现Cache-ControlExpires字段,记录值都是24小时。

ssl

點擊查看更多內容
2人點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
全棧工程師
手記
粉絲
26
獲贊與收藏
78

關注作者,訂閱最新文章

閱讀免費教程

感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消