http緩存(http caching)

經過使用緩存web網站和web應用的性能可以獲得顯著的提高。Web caches可以減少延遲和網絡流量,從而縮短展現資源所花費的時間。web

在http中控制緩存行爲的首部字段是Cache-Control,Cache-Control能夠有多個指令,指令之間用逗號分割。Cache-Control是通用首部字段,它即能出如今響應頭中也能出如今請求頭中緩存

一.緩存請求指令

  1. Cache-Control: max-age=<seconds>
  2. Cache-Control: max-stale[=<seconds>]
  3. Cache-Control: min-fresh=<seconds>
  4. Cache-Control: no-cache
  5. Cache-Control: no-store
  6. Cache-Control: no-transform
  7. Cache-Control: only-if-cached

二.緩存響應指令

  1. Cache-Control: must-revalidate
  2. Cache-Control: no-cache
  3. Cache-Control: no-store
  4. Cache-Control: no-transform
  5. Cache-Control: public
  6. Cache-Control: private
  7. Cache-Control: proxy-revalidate
  8. Cache-Control: max-age=<seconds>
  9. Cache-Control: s-maxage=<seconds>

三.指令介紹

1.與緩存能力相關的指令

1.public:指明任何緩存區都可以緩存響應服務器

2.private:指明響應是針對單一用戶的,不能存儲在共享緩存區中,只有私有緩存區能存儲響應網絡

3.no-cache:在使用緩存資源以前要向源服務器驗證緩存的有效性異步

4.only-if-cached:指明客戶端只想從緩存中獲取響應,不須要與源服務器聯繫肯定資源是否更新性能

2.與到期時間相關的指令

1.max-age=<seconds>:指定資源被視爲有效的最大時間量,單位爲秒網站

2.s-maxage=<seconds>:與max-age=<seconds>指令的做用類似,可是它只對共享緩存有效,對私有緩存無效3d

3.max-stale[=<seconds>]:即便緩存資源過時客戶端仍是接受緩存區中的資源。若是未指定數值,那麼不管過時多久,客戶端都接受緩存區中的響應,若是指定了具體數值,那麼即便過時,只要處於max-stale指定的時間內,客戶端仍是接受緩存區中的資源code

4.min-fresh=<seconds>:代表從緩存區中返回未過指定時間的緩存資源orm

5.stale-while-revalidate=<seconds>:指示客戶端願意接受一個過時的響應,同時在後臺異步檢查一個新的響應。秒值表示客戶機願意接受過時響應的時間。

6.stale-if-error=<seconds>:若是檢查新資源失敗,客戶端願意接受過時的資源。秒值指示客戶端在初始過時後願意接受過時響應的時間。

3.與從新驗證和從新加載相關的指令

1.must-revalidate:在使用過時的緩存資源以前,必須向源服務器確認緩存資源的狀態而且不會使用過時的資源。它會忽略max-stale[=<seconds>]指令

2.proxy-revalidate:和must-revalidate做用相似,可是它只應用於共享緩存,會被私有緩存忽略

3.immutable:指明在任什麼時候候都不能改變響應體

4.其餘指令

1.no-store:不緩存請求和響應中的任何內容

2.no-transform:緩存不能改變請求和響應中的任何實體主體(The Content-Encoding, Content-Range, Content-Type 頭部字段不能被修改)

相關文章
相關標籤/搜索