美文网首页
HTTP缓存

HTTP缓存

作者: 壹东一兮 | 来源:发表于2020-04-15 16:32 被阅读0次

缓存是提升页面性能的一项重要技术,而HTTP

缓存技术在我们日常使用浏览器时被广泛应用。

HTTP缓存分为两种类型
  1. 强缓存
  2. 协商缓存

下面主要解释下这两种缓存是如何实现的

  1. 场景解释两种概念
    强缓存:场景:在浏览器访问某个页面时,(可以认为浏览器发送网络请求前都会去内存中查找缓存)在浏览器缓存中命中了某个缓存,判断缓存是否有效,如果有效会直接将缓存内容作为网络请求的返回结果,且标注状态码为200 (from cache) 。
    协商缓存:在浏览器读缓存时,发现缓存过期,就发送一个请求到后端去访问资源,结果后端发现这个资源未发生修改,于是返回304状态的报文,告诉浏览器这个过期的缓存还可以继续使用。
  2. 如何判断缓存有效呢
    这里存在两个效果类似的字段:cache-control & Expires。
    • cache-control: HTTP1.1 标准,标注浏览器以何种方式对数据进行缓存,主要关注max-age 这个设置,这个设置的值是一个相对值(就是一个保质期),这个相对值相对于用户首次拿到这个数据的时间。
      315360000s = 10 years


      百度图标
    • Expires:HTTP1.0标准(新标准的优先级大于旧标准,所以同时有Cache-Control 和 Expires时,优先遵循Cache-Control 标准),标注的是一个绝对值,即有效日期(生产日期 + 保质期)
  1. 如果发现缓存已经失效了呢?
    浏览器会去服务器再去请求资源
    1. 如果服务器使用cache-control , 则请求失效缓存时,Request Headers要携带If-Modified-Since这个字段(等同于Last-Modified),去后端请求,当后端资源未修改时,即后端的Last-Modified字段未修改,就返回一个304报文给客户端浏览器,让浏览器继续使用这个数据,这就实现了协商缓存
    2. 如果服务器使用Expires,Request Headers 就要携带If-None-Match字段(等同于Etag,服务器对资源进行hash加密之后得出的字符串),去后端请求,后续处理同1 。

相关文章

  • HTTP缓存原理

    什么是HTTP缓存 HTTP缓存通常指浏览器缓存,基于HTTP中header字段实现HTTP缓存分为强缓存和协商缓...

  • 前端缓存

    前端缓存 前端缓存主要是分为HTTP缓存和浏览器缓存。其中HTTP缓存是在HTTP请求传输时用到的缓存,主要在服务...

  • 前端缓存详解

    一、前言 前端缓存主要是分为HTTP缓存和浏览器缓存。其中HTTP缓存是在HTTP请求传输时用到的缓存,主要在服务...

  • PWA笔记一:Web的万物基础缓存

    前言 这里讨论的缓存包括两种,一种是HTTP缓存,一种是Service Worker缓存。 HTTP缓存 HTTP...

  • 前端缓存的理解 或者 前端数据持久化的理解(强制缓存、协商缓存)

    前端缓存分为HTTP缓存和浏览器缓存 其中HTTP缓存是在HTTP请求传输时用到的缓存,主要在服务器代码上设置;而...

  • http缓存和各个版本差异理解

    http缓存我们可以通过设置http头部属性来对资源进行缓存,资源缓存分为强制缓存和协商缓存 强制缓存expire...

  • http缓存

    http缓存分为强制缓存和对比缓存 强制缓存时, 客户端先判断本地缓存是否有效(http/1.1通过Cache-C...

  • HTTP缓存

    缓存控制Cache-Control Cache-Control是Web性能优化的一种,能加速HTTP请求与响应。 ...

  • http缓存

    来源: 《http权威指南》学一个东西,怎么去学习呢?这分为三个步骤,是什么, 为什么, 怎么做?文章我会着重讲怎...

  • Http缓存

    参考文章:http://oohcode.com/2015/05/28/http-cache/ 客户端 头字段: C...

网友评论

      本文标题:HTTP缓存

      本文链接:https://www.haomeiwen.com/subject/inxcvhtx.html