浏览器缓存机制

知识点:

  • 缓存头cache-control
  • 验证头:last-modified/Etag
  • cookie

1 cache-control

作用:让浏览器请求资源的时候从缓存中读取。设置之后会从客户端缓存而不经过服务端验证,如果max-age设置的时间过长,服务更新了文件客户端不会知道。

解决方案:给js文件和其他静态资源文件加哈希码,如果资源不变哈希码不变,也就是url不变;如果内容有变化,哈希码会改变,导致嵌入在页面的url路径发生变化,浏览器会发起新的静态资源请求。

如果cache-control 设置了no-cache,尽管有cache-control但是还是要经过服务端进行验证,不能直接使用缓存。

2 验证头

2.1 last-modified

last-modified:上次修改时间,配合if-modified-since或者if-unmodified-since使用。

解释:发起请求的时候通过last-modified会将if-modified-since带上,服务器就可以通过读取header里面的if-modified-since对比上次修改的时间。验证能否使用缓存,资源是否需要更新。

2.2 Etag

数据签名:对资源进行唯一的签名。最常见的是对资源内容进行哈希计算,用这个签名标记资源。

配合if-match或者if-non-match使用(etag)的值,对比资源签名判断是否使用缓存。

3 cookie

通过set-cookie设置,浏览器下次请求就会自动带上,通过键值对保存,可以设置很多个。

max-ageexpires设置过期时间
secure只在https的时候发送
设置HttpOnly之后无法通过document.cookie访问(防止CSRF攻击,会用用户的登录信息获取隐私数据)
给cookie设置domain可以使得这个域名之下都可以访问cookie。

可以使用cookie去保存session,cookie不等同与session。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值