HTTP缓存

HTTP缓存

http缓存分为两种:

一种是强缓存:使用expires(http1.0)和cache-control

expires使用时可以在Response Header 中定义一个expires的字段来定义缓存最终失效时间;

但是expires有个极大缺陷:1是服务端时间和客户端时间可能不一致(客户端时间可以自行修改)

导致缓存功能存在缺陷

 

cache-control(http1.1,优先级大于exprise)解决了expires的问题,他拥有多个字段可以控制缓存,max-age,s-max-age,no-store,

no-cache public 和 private等

max-age s-max-age 这两个字段是一个数字,表示资源过了多少秒之后失效,浏览器中两种都起作用,

 s - max - age优先级大于max - age,在代理服务器中s - max - age有效

no-cache no-store

 no-cache表示不直接验证浏览器缓存情况,而是通过协商缓存(Etag)来判断是否需要更新,

    no - store会忽略所有缓存协议,直接请求最新资源

pragma:优先级高于 cache-control 和 expires 使用no-cache 和 no-store两个字段
 

第二种是协商缓存:

协商缓存使用 last-modified 和 etag(etag级别优先于last-modified)

last-modified 该字段定义后,服务器端会用这个字段和服务器端资源的最后修改时间做对比,若一致则证明没有被修改,

 告知浏览器可直接使用缓存并返回 304;若不一致则直接返回修改后的资源,并修改 last - modified 为新的值。

last-modefied有两个缺陷,1:只能精确到秒,一秒以内的数据变动无法侦听;

                        2:只要编辑了就会有修改,不管内容有没有改变;

etag : 该字段使用时会生成一个资源字符码,服务端确认字符码没有修改时返回304,使用浏览器缓存,如果服务端返回

 的字符码不一致的话,会重新拉取服务端代码,并更新这个资源字符码;

etag的缺陷是:每次生成资源字符码需要耗费服务端性能

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值