浏览器缓存剖析

浏览器缓存

浏览器缓存分为几个阶段:

浏览器缓存阶段

一.强迫缓存阶段

1.cache-control: 决议了浏览器端和服务器端缓存的战略,能够出现在相应头response header中,或许 要求头 request header中

  • max-age:指定缓存的最大有用时候,eg:cache-control:max-age=315360000,注重与
    expires做辨别(与cache-control平级),max-age优先级高于 expires,这个属性时HTTP1.1中新增的属性
  • s-maxage:指定public的缓存,缓存装备有许多,不单单议浏览器是缓存装备,在全部收集中,可能会存在代理服务器,CDN属于public缓存装备,由于能够多用户接见并读取信息;什么是private缓存呢,指的是只是你个人接见的装备,浏览器就属于private缓存装备,eg:s-maxage=31536000;他的优先级高于max-age,只能设定public的缓存装备
  • private
  • public
  • no-cache:毛病明白:不运用缓存;no-cache指的是不论当地是不是设置了max-age(即疏忽当地浏览器端的缓存战略),都要向服务器端发送要求,由服务器端来推断缓存状况
  • no-store:完整不运用任何的缓存战略,不论是服务器端照样浏览器端的

2.expires:Thu, 14 Mar 2019 17:29:17 GMT,这个属性时HTTP1.0中设置,

  • 缓存逾期时候,用来指定资本到期时候,是服务器端细致的时候点。
  • 通知浏览器在逾期时候前浏览器能够直接从浏览器缓存取数据,而无需再次要求。

二.协商缓存阶段

基于客户端和服务器端的协商缓存机制

1.last-modified

last-modified – response header
if-modified-since – request header

需要与cache-control配合运用,假如设置了max-age 且没有逾期,就不会运用last-modified;逾期了以后,才会运用last-modified。

last-modified 瑕玷:

  • 服务器端不能准确猎取 文件变动时候时
  • 文件修正时候改了,文件内容没有变
  • 以秒为单元,假如是ms内修正了文件,就表现不出来

2.ETag

文档内容的hash值
ETag —- response header
if-None-Match —-request header

etag优先级高于last-modified

状况码剖析

  • 200(from cache): 浏览器端缓存,cache-control:max-age=315360000
    或许expires起作用
  • 304: 服务器端缓存,last-modified 或许 etag 起作用
  • 200:浏览器端没有缓存,或许服务器端缓存失效,或许用户点击了ctrl+F5 浏览器直接从服务器端下载最新的数据

注重:Chrome浏览器,手动点击革新按钮都邑 在要求头中,增加 chche-control:max-age=0,如许就一定不会运用浏览器端的缓存!

越发细致,请参考:缓存详解

    原文作者:Alfred
    原文地址: https://segmentfault.com/a/1190000018563941
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞