zoukankan      html  css  js  c++  java
  • HTTP缓存机制

      web缓存大致可以分为:数据库缓存、服务器缓存(代理服务器缓存、CDN缓存)、浏览器缓存。其中浏览器缓存包含:HTTP缓存、indexDB、cookie、localstorage等。

      在具体了解HTTP缓存之前先来明确几个术语:

        缓存命中率:从缓存中得到数据的请求数与所有请求数的比率。理想状态下是越高越好。

        过期内容:超过设置的有效时间,被标记为“陈旧”的内容。通常过期内容不能用于回复客户端的请求,必须重新向源服务器请求新的内容或验证缓存的内容是否仍然准备。

        验证:验证缓存中的过期内容是否仍然有效,验证通过的话刷新过期时间。

        失效:失效就是把内容从缓存中移除。当内容发生改变时就必须移除失效的内容。

      浏览器缓存主要是HTTP协议定义的缓存机制。

        HTML meta标签,例如<META HTTP-EQUIV="Pragma" CONTENT="no-store">,含义是让浏览器不缓存当前页面。但是代理服务器不解析HTML内容,一般应用广泛的是用HTTP头信息控制缓存。

    1.什么是浏览器缓存?

      浏览器缓存是浏览器在本地磁盘对用户最近请求过的文档进行存储,当访问者再次访问同一个页面时,浏览器就可以直接从本地磁盘加载文档。

    2.缓存规则解析

      我们认为浏览器存在一个缓存数据库,用于存储缓存信息。在客户端第一个请求数据时,此时缓存数据库中没有对应的缓存数据,需要请求服务器,服务器返回后,将数据存储至缓存数据中。

    3.缓存的类型:对于HTTP的缓存机制来说,策略体现在HTTP的头部信息的字段上,而这个策略根据是否需要重新向服务器端发起请求可以分为强缓存和协商缓存两大类。

      1)强缓存:强缓存紧密联系着一个缓存时间期限,当浏览器请求资源时会查看缓存中的资源是否存在并且确定该缓存的资源是否过了“保质期”,若没有超过保质期,则将取得缓存中的资源进行下一步处理。

      2)协商缓存:协商缓存无论如何都会和服务器交互,比强缓存稍微要复杂一点,但是二者是相辅相成并且可以共同存在的,强缓存优先级较高,意味着请求一个资源时会先比较强缓存的字段,如果命中则不会再执行接下来的协商缓存的过程。

  • 相关阅读:
    单向循环列表(Java实现)
    单链表的实现(Java实现)
    二分查找法(Java实现)
    六大排序算法(Java实现)
    学习python第十天
    学习python第九天
    MapNode
    AtomicReference
    AtomicStampedReference
    尾递归(TailRecursion)
  • 原文地址:https://www.cnblogs.com/HuiH/p/11720649.html
Copyright © 2011-2022 走看看