浏览器缓存机制的理解

什么是CDN?
下面是百度百科的定义。
CDN的全称是Content Delivery Network,即内容分发网络。CDN是构建在现有网络基础之上的智能虚拟网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。CDN的关键技术主要有内容存储和分发技术。
通俗的理解就是火车票的代售点。功能就是降低火车站售票压力。
什么是浏览器缓存?
浏览器缓存就是浏览器把通过http请求的资源缓存到本地的一种行为。
下面是浏览器缓存机制的过程。
在这里插入图片描述

何为强缓存?
服务器通过设置响应头中cache-control 字段或expires(也可以同时设置,此时cache-control优先级高) 指定强缓存的时间。
cache-control支持以下值:
max-age:100(单位为秒)(强缓存)
no-cache (协商缓存)
private(只允许在客户端浏览器缓存)
public(允许在客户端和代理服务器缓存)
expires:
值为一个绝对格林尼治时间。
何为协商缓存?
cache-control:no-cache。
Last-Modify/If-Modify-Since

浏览器第一次请求资源的时候,响应头会加上 Last-Modify,Last-modify 是资源的最后修改时间。
当浏览器再次请求该资源时,请求头中会包含 If-Modify-Since,该值为之前返回的 Last-Modify。服务器收到 If-Modify-Since 后,根据资源的最后修改时间判断是否有效。
如果缓存有效,则返回 304,并且不会返回资源内容,并且不会返回 Last-Modify。
ETag/If-None-Match
与 Last-Modify/If-Modify-Since 不同的是,Etag/If-None-Match 返回的是一个校验码。ETag 可以保证每一个资源是唯一的,资源变化都会导致 ETag 变化。服务器根据浏览器上送的 If-None-Match 值来判断是否命中缓存。
与 Last-Modified 不一样的是,当服务器返回 304 Not Modified 的响应时,由于 ETag 重新生成过,response header 中还会把这个 ETag 返回,即使这个 ETag 跟之前的没有变化。
Last-Modified 与 ETag 是可以一起使用的,服务器会优先验证 ETag,一致的情况下,才会继续比对 Last-Modified,最后才决定是否返回 304。

参考作者:null仔
参考来源:掘金
参考链接:https://juejin.cn/post/6844903764566999054

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值