理解缓存

缓存在我们的日常网络环境下无处不在,那到底什么是缓存呢?

打个比方,当你访问一个网站时,你会感觉第一次的访问速度很慢,但是当你第二次,第三次访问时速度会明显提升,这就是一个缓存的典型案例,原因是这样的,当你第一次访问这个网页时,会访问指定的服务器,从服务器下载资源到本地,存在你的磁盘中,再后面的访问就会在磁盘中找相对于的资源,当然这些都不用我们关心,是浏览器自动帮我们处理的

  • 缓存的分类
    缓存的大概可以用两种划分方法来分类
    • 按储存位置划分
      • memery cache
        这种缓存是存在你的内存中的,所以这部分的缓存访问速度会非常快,但有个缺点就是内存普遍都不会太大,所以每当浏览器关闭这类型的缓存就会被清除
      • disk cache
        这类缓存是存在你的磁盘中,当你重新打开浏览器访问一个之前访问过的网站时,第一次会使用这部分的disk cache,访问过后又会被存在memery cache中,这样当你不关闭浏览器,重复访问同一个网站速度会快很多,这种缓存的优势也很明显,储存空间大,可以持久储存,但访问速度比memery cache慢很多
    • 按缓存的机制划分
      • 强制缓存
        强制缓存,顾名思义就是无论如何都是使用缓存,那什么时候才不使用缓存呢?,对于用户来说这部分当然不用我们考虑,这是后端的程序员们考虑的事情。每次访问网站都会往后端服务器发送一个请求,这个请求的请求头中有一个cache-control属性(如果是http1.0就为expires),程序员可以为这个属性设置一个时间,当这个时间计时结束,则再访问时这个网站时就不会再走缓存了,而是得重新向服务器发送请求。
      • 协商缓存
        协商有讨论,商量的意思,所以这个协商缓存也很好理解,访问网站资源时,服务器会对这个资源设置一个唯一标识符和一个时间,之后才将这个资源返回给用户,当用户再次访问资源时,你的请求头中就会携带上次服务器返回的标识符和时间,后端服务器会进行对比,对比标识符和时间与当前文件的是否一致,如果一致则返回状态码304,表示资源走缓存,如果不匹配,则资源会再次从服务器下载,并重新设置标识符时间
        请求头中的属性为
        etag(文件唯一标识符),last-modified(文件最后一次修改时间)
        响应头中的属性为
        if-none-match(与etag对比),if-modified-since(与last-modified对比)
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值