為什么需要瀏覽器緩存?我們需要做些什么?
我們知道通過HTTP協(xié)議,在客戶端和瀏覽器建立連接時需要消耗時間,而大的響應需要在客戶端和服務器之間進行多次往返通信才能獲得完整的響應,這拖延了瀏覽器可以使用和處理內容的時間。這就增加了訪問服務器的數(shù)據(jù)和資源的成本,因此利用瀏覽器的緩存機制重用以前獲取的數(shù)據(jù)就變成了性能優(yōu)化時需要考慮的事情。
那么有什么建議嗎?當然。
為每個資源指定一個明確的緩存策略,用以定義資源是否可以緩存,由誰來緩存,可以緩存多久,并且在緩存時間到期時如何有效地重新驗證。當服務器返回一個響應時,它需要在響應頭中提供Cache-Control和ETag。
說到瀏覽器中的緩存機制,其實就相當于HTTP協(xié)議定義的緩存機制,因為瀏覽器為我們實現(xiàn)了它。一般情況下我們會想到到HTTP響應頭中的Expires,Cache-Control,Last-Modified,If-Modified-Since,Etag這樣的與緩存相關的響應頭信息。
但是這里我們說服務器返回一個響應時提供必要的Cache-Control和Etag即可。這是為什么呢?
因為Cache-Control與Expires的作用一致,Last-Modified與ETag的作用也相近。但它們有以下區(qū)別:
現(xiàn)在默認瀏覽器均默認使用HTTP 1.1,所以Expires和Last-Modified的作用基本可以忽略,具備Cache-Control和Etag即可。
當然用戶的行為也會影響瀏覽器的緩存,像這樣: