響應(yīng)就是服務(wù)器發(fā)送給客戶端的數(shù)據(jù)!
1. 響應(yīng)格式:
? * 響應(yīng)首行
? * 響應(yīng)頭
? * 空行
? * 響應(yīng)體(或稱之為響應(yīng)正文)
2. 狀態(tài)碼
響應(yīng)首行的結(jié)構(gòu):協(xié)議及版本 狀態(tài)碼 狀態(tài)碼說明,例如:HTTP/1.1 200 OK
? * 200:請求成功
? * 302:請求重定向
? * 304:請求資源沒有改變
? * 404:請求資源不存在,屬性客戶端錯誤
? * 500:服務(wù)器內(nèi)部錯誤
3. 響應(yīng)頭
? * Content-Type:響應(yīng)正文的MIME類型,例如image/jpeg表示響應(yīng)正文為jpg圖片,例如text/html;charset=utf-8表示響應(yīng)正文為html,并且編碼為utf-8編碼。瀏覽器會通過這一信息來顯示響應(yīng)數(shù)據(jù)
? * Content-Length:響應(yīng)正文的長度
? * Set-Cookie:服務(wù)器寄存在客戶端的“小甜點”,當(dāng)客戶端再次訪問服務(wù)器時會把這個“小甜點”還給服務(wù)器
? * Date:響應(yīng)時間,可能會有8小時的誤差,因為中國的時區(qū)問題
通知客戶端瀏覽器不要緩存頁面的響應(yīng)頭:
? * Expires:-1
? * Cache-Control: no-cache
? * Pragma: no-cache
自動刷新響應(yīng)頭,瀏覽器會在3秒鐘后自動重定向到baidu主頁
? * Refresh: 3;url=http://www.baidu.com
4. 狀態(tài)碼304
相關(guān)頭信息
? * Last-Modified:響應(yīng)頭,表示當(dāng)前資源的最后修改時間;
? * If-Modified-Since:請求頭,表示緩存的資源最后修改時間;
狀態(tài)碼304:表示訪問的資源沒有改變
? 1. 客戶端首次訪問服務(wù)器的靜態(tài)資源index.html,服務(wù)器會把index.html響應(yīng)給客戶端,而且還會添加一個名為Last-Modified的響應(yīng)頭,它說明了當(dāng)前index.html的最后修改時間
? 2. 客戶端收到響應(yīng)后,會把index.html緩存在客戶端上,而且還會把Last-Modified緩存起來。
? 3. 客戶端第二次請求index.html時,會添加名為If-Modified-Since的請求頭,它的值是上次服務(wù)器響應(yīng)頭Last-Modified,服務(wù)器獲取到客戶端保存的最后修改時間,以及當(dāng)前資源的最后修改時間進(jìn)行比較,如果相同,說明index.html沒有改動過,那么服務(wù)器不會發(fā)送index.html,而是響應(yīng)狀態(tài)碼304,即通知客戶端資源沒有改變,你可以使用自己的緩存。