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