[TOC]
### http緩存分類:
~~~
http緩存分為兩類:強制緩存和協商緩存,強制緩存中存在三種狀態
~~~
#### 強制緩存:
強制緩存就是向瀏覽器緩存查找該請求結果,并根據該結果的緩存規則來決定是否使用該緩存結果的過程,強制緩存的情況主要有三種(暫不分析協商緩存過程),如下:
不存在該緩存結果和緩存標識,強制緩存失效,則直接向服務器發起請求(跟第一次發起請求一致),如下圖:

存在該緩存結果和緩存標識,但該結果已失效,強制緩存失效,則使用協商緩存(暫不分析),如下圖

存在該緩存結果和緩存標識,且該結果尚未失效,強制緩存生效,直接返回該結果,如下圖

說明:
控制強制緩存的字段分別是Expires和Cache-Control,其中Cache-Control優先級比Expires高。
#### 協商緩存:
協商緩存就是強制緩存失效后,瀏覽器攜帶緩存標識向服務器發起請求,由服務器根據緩存標識決定是否使用緩存的過程,主要有以下兩種情況:
協商緩存生效,返回304,如下

協商緩存失效,返回200和請求結果結果,如下

說明:
協商緩存的標識也是在響應報文的HTTP頭中和請求結果一起返回給瀏覽器的,控制協商緩存的字段分別有:Last-Modified / If-Modified-Since和Etag / If-None-Match,其中Etag / If-None-Match的優先級比Last-Modified / If-Modified-Since高。