美文网首页
HTTP缓存

HTTP缓存

作者: 梁庄十年 | 来源:发表于2022-06-20 00:26 被阅读0次

1 缓存分类

a. 强缓存;
b. 协商缓存;

2 缓存作用

a. 可以加快资源获取速度,提升用户体验,减少网络传输,缓解服务端的压力;

3 缓存运作流程

缓存流程图

4 强缓存详解

a. 强缓存分为 Disk Cache(存放硬盘)和Memory Cache(存放内存),存放位置有浏览器控制,是否强缓存由Expires, Cache-Control 和Pragma 三个Header属性共同控制;
b. 不需要发送请求到服务端,直接读取浏览器本地缓存,在chrome的network中显示的HTTP状态码是200;

4.1 Expires

expires的值是一个HTTP日期,在浏览器发起请求时,会根据系统时间和Expires的值进行比较,如果系统时间超过了Expires的值, 缓存失效。由于和系统时间进行比较,所以当系统时间和服务器时间不一致的时候,会有缓存有效期不准的问题。 Expires的优先级在三个Header属性中最低。

4.2 Cache-Control

cache-control是http1.1中新增的属性,在请求头和响应头中都可以使用;常用属性如下:

  • max-age: 单位是秒,缓存时间计算的方式是距离发起的时间的秒数,超过间隔的秒数缓存失效。
    -no-cache: 不使用强缓存, 需要和服务器缓验证缓存是否新鲜。
    -no-store: 禁止使用缓存(包括协商缓存),每次向服务器请求最新的资源;
  • private: 专用于个人的缓存,中间代理,cdn等不能缓存此响应;
    -public: 响应可以被中间代理,cdn等缓存;
    -must-revalidate: 在缓存过期前可以使用,过期后必须想服务器验证;
4.3 Pragma
  • pragma只有一个属性值(no-cache),效果和cache-control中的no-cache一致,不使用强缓存,需要与服务器验证缓存是否新鲜,在三个头部属性中的优先级最高。

5 协商缓存详解

当浏览器的强缓存失效的时候或者请求头中设置了不走强缓存,并且在请求头中设置if-modified-since或者if-none-match的时候,会将这两个属性值到服务端去验证是否命中协商缓存,如果命中了协商缓存,会返回304,加载浏览器缓存,并且在响应头会设置last-modified或者Etag属性。

5.1 Etag/if-none-match

a. Etag/If-None-Match的值是遗传has码,代表的是一个资源的标识符,当服务端的文件变化的时候,hash值随之变化;通过请求头中的If-None-Match和当前文件的hash值进行比较,如果相等则表示命中协商缓存。
b. Etag有强弱校验之分,如果hash码是以“w/”开头的一串字符串,说明此时协商缓存的校验是弱校验,只有服务器上的文件差异(根据Etag计算方式来决定)达到能够触发hash值后缀变化的时候,才会真正的请求资源,否则返回304并加载浏览器缓存。

5.2 Last-Modified/If-Modified-Since

Last-modified/If-Modified-Since的值代表的是文件的最后修改时间,第一次请求服务端会把资源的最后修改时间放到Last-Modified响应头中,第二次发起请求的时候,请求头会带上上次一响应头中的last-modified的时间,并放到If-Modified-Since请求头属性中,服务端根据文件最后一次修改时间和If-Modified-Since的值进行比较, 如果相等,返回304, 并加载浏览器缓存。

参考

相关文章

  • 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/yvddvrtx.html