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