亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

HTTP緩存機制

標簽:
架構

作者:没有角的牛

原文链接:https://segmentfault.com/a/1190000015282712

简介

缓存是指将之前请求过的内容存储在本地,之后可以重复利用而不用再次重新获取相同的内容。

合理利用缓存是提高Web性能的一个重要方法,加快了客户端渲染速度,同时减轻了服务器的压力。下面我们来介绍HTTP缓存的一些机制。

分类

HTTP缓存可以分成两类:from cache304缓存

  • from cache:在并不会真的发出HTTP请求,而是直接从本地文件中读取。

  • 304缓存:304指的是HTTP响应码,表示服务器告诉客户端该文件没有修改过,可以直接用缓存的文件。相比from cache,304会发出HTTP请求,不过响应的内容并未包含请求的文件。

from cache

当我们打开开发者工具,有时我们可以看到下面这样的请求:

https://img1.sycdn.imooc.com//5b2218fe0001d85508000209.jpg

当我们看到from xxx cache,我们就知道这些并没有真正地发出请求,而是读取的缓存。

那么有哪些HTTP头可以控制这类缓存呢?

Pragma

HTTP/1.0 旧时代的产物,当值为no-cache时禁用缓存。建议尽在需要支持HTTP/1.0缓存客户端的情况下使用。

在请求头和响应头中都可以使用。

Cache-Control

HTTP/1.1,用于控制缓存的行为。主要有以下几种值

  • no-cache: 不进行缓存,强制从服务器进行拉取。可用在请求头和响应头中。

  • private/public: private表示不允许中间代理进行缓存,public则允许。只用于响应头中。

  • max-age=<seconds>: 缓存的有效时长,单位为秒。可用在请求头和响应头中。

Expires

HTTP/1.0,用户控制缓存失效的时间,其值为HTTP时间戳。当Cache-Control设置了max-age
时,会忽略此响应头。

304缓存

Last-Modified

HTTP/1.0 响应头。其值为该资源最近的修改时间。之后客户端再请求该资源时,会带上Last-Modified-Since或者Last-Unmodified-Since请求头,其值为之前响应头的时间。如果资源在之后的时间内有修改,则服务器会返回最新的资源,如果没有修改,则只回304状态码,表示资源未过期,可以使用客户端缓存。

ETag

HTTP/1.1 响应头,其值为资源的HASH值。之后客户端再请求该资源时,会带上If-None-Match或者If-Match请求头,其值为之前的HASH值。如果服务器计算的HASH和客户端发送的HASH不一致,则说明资源有修改,会返回完整的资源,如果一致,则返回304状态码。

Last-Modified相比,ETag更能准确地检测资源是否有过期,但是也需要更高的计算消耗。

参考文献

  1. HTTP 缓存


點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消