與HTTP緩存有關(guān)的首部字段:
在HTTP1.0時(shí)代客戶端緩存的方式可以通過pragma和Expires控制
Pragma:
當(dāng)值設(shè)置為no-cache時(shí)柠掂,客戶端不使用緩存腐碱。
Expires:
值為一個(gè)GMT(格林尼治時(shí)間),用來告訴瀏覽器緩存過期時(shí)間,該時(shí)間是相對(duì)服務(wù)器時(shí)間而言的歼争,如果客戶端和服務(wù)器時(shí)間不一致則緩存時(shí)間可能就會(huì)失去作用。
Cache-Control
HTTP1.1時(shí)代新增了Cache-Control來解決Expires客戶端與服務(wù)器時(shí)間不一致的問題渗勘,一般是用‘max-age=1000’用來表示1000秒之后緩存過期沐绒。
以上三個(gè)字段優(yōu)先級(jí)順序?yàn)椋篜ragma->Cache-Control->Expires
- 上述三種首部字段均能決定客戶端是否向服務(wù)器發(fā)送請(qǐng)求,但是如果緩存到期時(shí)服務(wù)器端的數(shù)據(jù)并未被修改過呀邢,那么我們依舊要花費(fèi)帶寬和時(shí)間來重新獲取數(shù)據(jù)洒沦。為讓客戶端和服務(wù)器端實(shí)現(xiàn)緩存文件更新驗(yàn)證、提升緩存復(fù)用率价淌,HTTP1.1新增了Last-Modified和ETag來解決這件事申眼。
Last-Modified:
服務(wù)器將資源傳遞給客戶端時(shí)會(huì)將資源最后修改時(shí)間以‘Last-Modified:GMT’的形式加在實(shí)體首部一同發(fā)給客戶端〔跻拢客戶端再次請(qǐng)求資源時(shí)會(huì)將該信息一同發(fā)給服務(wù)器括尸,如果該值與服務(wù)器端一致則返回304,內(nèi)容為空病毡,依舊使用緩存濒翻,若與服務(wù)器端不一致則發(fā)送資源,返回200.但是當(dāng)資源修改了啦膜,但是實(shí)際內(nèi)容沒有改變時(shí)有送,服務(wù)器仍然會(huì)發(fā)送資源給客戶端。
ETag:
為解決Last-Modified可能存在的不準(zhǔn)確的問題僧家,HTTP1.1還推出了ETag首部字段雀摘,服務(wù)器會(huì)通過某種算法給資源得出一個(gè)唯一標(biāo)識(shí)符,把資源發(fā)給客戶端時(shí)會(huì)將該字段放在實(shí)體首部一起發(fā)給客戶端八拱≌笤客戶端下次請(qǐng)求資源時(shí)會(huì)將該字段一起發(fā)送給服務(wù)器進(jìn)行匹配。