web性能优化措施中,合理设置浏览器缓存是重要的优化手段之一,它能够加快页面访问速度和节省用户网络带宽等。nginx
简单介绍下相关概念。web
Expires出自HTTP1.0,Cache-Control出自HTTP1.1,同时设置二者时,Cache-Control 会覆盖 Expires。
Expires
指定的是实际过时日期而不是秒数。但Expires存在一些问题,如服务器时间不一样步或不许确。因此最好使用剩余秒数而不是绝对时间来表达过时时间。apache
Cache-Control
可设置max-age值,单位秒,指定缓存过时时间。如:Cache-Control: max-age=3600。浏览器
ETag 和 Last-Modified都由服务器返回在response headers中,其中ETag的优先级比Last-Modified高,也就是说服务器会优先判断ETag的值。
ETag
是附加到文档上的任意标签,多是文档的序列号或版本号,或者是文档内容的校验等。当文档改变时ETag值也会随之改变。与ETag相关的是 If-None-Match
,当浏览器发起请求时,会在If-None-Match
字段携带ETag的值发给服务器;缓存
Last-Modified
是文档在服务器端最后被修改的时间。与Last-Modified
相关的是If-Modified-Since
,当浏览器发起请求时,会在If-Modified-Since
字段携带Last-Modified的值发送给服务器。性能优化
与强缓存有关的是 Expires 和 Cache-Control,若还在设定的时间范围内,则命中强缓存,浏览器不会向服务器发起请求,直接读取本地缓存。它的返回码是200,在控制台network的size栏能够看到form disk cache或from memory cache。服务器
与协商缓存有关的是 ETag 和 Last-Modified,当服务器收到If-None-Match
字段和If-Modified-Since
字段携带的信息后。若匹配成功,则命中协商缓存,服务器返回304 Not Modified;若匹配不成功,服务器返回200和新的资源。网络