美文网首页
HTTP缓存

HTTP缓存

作者: kiterumer | 来源:发表于2019-05-06 18:48 被阅读0次

我们知道,http协议是无状态,无连接的。有如下特点:

  • 无状态
    每次连接只处理一个请求,服务端处理完客户端一次请求,等到客户端作出回应之后便断开连接。
  • 无连接
    是指服务端对于客户端每次发送的请求都认为它是一个新的请求,上一次会话和下一次会话没有联系。

【状态】的含义可以这样理解
客户端与浏览器在某次会话中产生的数据
【无状态】则意味着这些数据不会被保留(翻脸不认人)

但是,通过利用cookie和session机制,现在的网络请求是有‘状态’的(你还是那个你)

cookie.png

缓存的好处

  • 减少冗余的数据传输,节省带宽
  • 减少服务端的负担
  • 加快客户端加载网页的速度,用户体验更好

Cache-Control和Expires

属于强制缓存,即在有效期内,浏览器不会向服务器发送数据请求(通常情况)
Cache-Control是HTTP/1.1,Expires是HTTP/1.0,两者若同时出现,前者优先级更高
Cache-Control是一个时间段(max-age),Expires是一个时间点

Cache-Control : max-age = 1000
Expires :  Wed, Jan 10 2018 00:27:04 GMT

Cache-Control可以再报文头部取不同的值:

  • private:客户端可以缓存
  • public:客户端和代理服务器都可以缓存
  • max-age=t:缓存内容的有效时间
  • no-cache:需要使用协商缓存来验证数据
  • no-store:禁止浏览器缓存数据

协商缓存(Last-Modified和Etag)

协商缓存需要进行对比判断是否使用缓存,这个由服务器承担。浏览器第一次请求数据时,服务器会将缓存标识与数据一起响应给客户端,客户端将它们备份至缓存中。再次请求时,客户端会将缓存中的标识发送给服务器,服务器根据此标识判断。若未失效,返回304状态码,浏览器拿到此状态码就可以直接使用缓存数据了。有两组分别是:Last-Modified/if-Modified-Since(基于资源修改的时间标识)与Etag/if-None-Match(利用md5摘要算法生成的一段字符串标识)。两者的流程很类似,区别在于根据什么来判断资源是否更新,是否需要下载资源。两者都是需要发送请求的。
如果对比后一致,那么服务器会返回304(Not Modified)

Last-Modified 与 If-Modified-Since

第一次请求返回的响应头:

Last-Modified: Wed, Jan 10 2018 00:27:04 GMT

第二次请求的请求头信息:

If-Modified-Since: Wed, Jan 10 2018 00:27:04 GMT

基于资源的修改时间来判断资源有无更新

Etag/if-None-Match

基于资源内容的摘要信息(md5)来判断
第一次请求返回的响应头:

ETag: "15f0fff99ed5aae4edffdd6496d7131f"

第二次请求的请求头信息:

If-None-Match: "15f0fff99ed5aae4edffdd6496d7131f"

相关文章

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