經過使用緩存web網站和web應用的性能可以獲得顯著的提高。Web caches可以減少延遲和網絡流量,從而縮短展現資源所花費的時間。web
在http中控制緩存行爲的首部字段是Cache-Control,Cache-Control能夠有多個指令,指令之間用逗號分割。Cache-Control是通用首部字段,它即能出如今響應頭中也能出如今請求頭中緩存
1.public
:指明任何緩存區都可以緩存響應服務器
2.private
:指明響應是針對單一用戶的,不能存儲在共享緩存區中,只有私有緩存區能存儲響應網絡
3.no-cache
:在使用緩存資源以前要向源服務器驗證緩存的有效性異步
4.only-if-cached
:指明客戶端只想從緩存中獲取響應,不須要與源服務器聯繫肯定資源是否更新性能
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>
:若是檢查新資源失敗,客戶端願意接受過時的資源。秒值指示客戶端在初始過時後願意接受過時響應的時間。
1.must-revalidate
:在使用過時的緩存資源以前,必須向源服務器確認緩存資源的狀態而且不會使用過時的資源。它會忽略max-stale
[=<seconds>]指令
2.proxy-revalidate
:和must-revalidate做用相似,可是它只應用於共享緩存,會被私有緩存忽略
3.immutable
:指明在任什麼時候候都不能改變響應體
1.no-store
:不緩存請求和響應中的任何內容
2.no-transform
:緩存不能改變請求和響應中的任何實體主體(The Content-Encoding, Content-Range, Content-Type 頭部字段不能被修改)