缺省协议和浏览器缓存

缺省协议

/缺省协议的使用,代表资源访问的协议和当前页面保持一致,如果页面是http,//就代表http,如果页面是http,也是如此。许多cdn也是如此,
//是缺省协议的写法

//jb51.net/css/

缺省协议的优缺点

本地调试时候,协议为文件协议(file://);
这样这个文件就不存在;

浏览器的缓存

为了节省网络资源的加速浏览,浏览器在用户磁盘对最近请求过的文档进行存储,再次请求这个页面,浏览器在本地读取,加速网页阅览。

缓存好处
  1. 缓解服务器的压力
  2. 提升性能
  3. 减少带宽消耗
缓存策略
  1. 强缓存:客户端访问服务器某资源,服务器给客户端请求的资源,告诉客户端将这个资源保存在本地,未来在使用这个资源就从本地获取,不需要向服务器请求。
  2. 协商缓存:客户端向服务器获取资源,服务器给客户端资源同时也给了客户端一些信息,客户端在下一次需要这个资源时候,将请求和信息发给服务器,由服务器判断客户端是否需要更新资源,不更新,返回客户端304,更新就把资源发给它。

(1)理解cache-control所控制的缓存策略

(2)理解last-modified 和etag 以及整个服务端的缓存流程

cache-control
cache 储存,藏吴
cintrol 控制
缓存控制之意,用它的api去控制缓存的时间大小属性
可以出现在response和request中,都可以出现
max-age
max-age=3150000;
设置最大缓存时间;在这个时间不去向服务端发起请求;
最大时间max-age优先级大于expires
s-maxage
s-maxage=315000;
设置之后,如果返回304,适用于cdn;
高于max-age;适用于public;所以去304到cdn拿去资源
private:私人资源
public:公共资源
no-cache: 搭配max-age=0 使用,不管文件有没有缓存过期,都要去服务端请求
no-store: 不适用缓存。
expires
缓存过期时间,指定服务器资源到期时间,优先级低于max-age;

在response heads 中,expires 是http1.0中的属性,之后cache-control(http1.1)出现,高于expires;

expires和cache-control 是强缓存,不会和浏览器协商,强行写入last-Modified/ If-Modeified-Since是协商缓存
last-Modified/ If-Modeified-Since
response header(获得时间)
last-modified: 时间
request header (发送时间)
if-modified-since: 时间在这个时间段内可以使用缓存

last-modified 缺点
    1:服务端可能无法获取精确时间
    2:文件修改时间,内容没变,也会出现问题
etag/ if-none-match
既然last-modified有如此多的缺点,所以现在一般使用etag;
etag需要和cache-control一起使用
这样last-modified的缺点就解决了;如何hash改变就请求资源,如果不变就使用缓存

response Headers
etag: hash哈希值
request headers
if-none-match : hash哈希值
分级缓存策略
200状态-->当浏览器没有缓存或者刷新页面,浏览器请求服务器数据

304状态-->这一层由last-modified/etag控制

200 from cache --> expires和cache-control控制
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值