所理解的缓存机制

前端页面缓存可以取决于三方面:浏览器机制、http协议机制、用户行为机制,其中http协议机制为重中之重:

①非HTTP协议定义的机制:<meta http-equiv="Pragma" content="no-cache"> 

--告诉浏览器当前页面所有资源不被缓存,部分浏览器支持,代理服务器不支持(因为不解析html)
②HTTP协议定义的机制:
--Expires策略,源于HTTP1.0,告诉浏览器在过期时间前直接从浏览器缓存取数据,而无需再次请求。
例子:Expires wed,28 Nov 2018 03:03:01 GMT
--Cache-control策略,源于HTTP1.1,作用与expires一致,优先级更高;
值可以是public、private、no-cache、no- store、no-transform、must-revalidate、proxy-revalidate、max-age
例子:Cache-control max-age=300  //单位s
  Last-Modified/If-Modified-Since要配合Cache-Control使用:
Last-Modified告诉浏览器最后修改时间;
If-Modified-Since:当资源过期时(使用Cache-Control标识的max-age),发现资源具有Last-Modified声明,则再次向web服务器请求时带上头 If-Modified-Since,表示请求时间。web服务器收到请求后发现有头If-Modified-Since 则与被请求资源的最后修改时间进行比对。若最后修改时间较新,说明资源又被改动过,则响应整片资源内容(写在响应消息包体内),HTTP 200;若最后修改时间较旧,说明资源无新修改,则响应HTTP 304 (无需包体,节省浏览),告知浏览器继续使用所保存的cache
  Etag/If-None-Match也要配合Cache-Control使用:
Etag:web服务器响应请求时,告诉浏览器当前资源在服务器的唯一标识(生成规则由服务器决定)。Apache中,ETag的值,默认是对文件的索引节(INode),大小(Size)和最后修改时间(MTime)进行Hash后得到的。
If-None-Match:当资源过期时(使用Cache-Control标识的max-age),发现资源具有Etage声明,则再次向web服务器请求时带上头If-None-Match (Etag的值)。web服务器收到请求后发现有头If-None-Match 则与被请求资源的相应校验串进行比对,决定返回200或304。


既生Last-Modified何生Etag?(后者是资源的唯一标识,权限最高)
秒级-毫秒级、定期生成文件(实际无修改)、与代理服务器时间有误
③用户行为与缓存:
用户操作    Expires/Cache-Control & Last-Modified/Etag
地址栏回车  有效 & 有效
页链接跳转  有效 & 有效
新开窗口    有效 & 有效  
前进/后退   有效 & 有效
F5刷新      无效 & 有效
ctrl+F5 无效 & 无效
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值