響應協議
HTTP/1.1 200 OK:響應協議為HTTP1.1,狀態碼為200,表示請求成功,OK是對狀態碼的解釋; Server: Apache-Coyote/1.1:服務器的版本信息; Content-Type: text/html;charset=UTF-8:響應體使用的編碼為UTF-8; Content-Length: 724:響應體為724字節; Set-Cookie: JSESSIONID=C97E2B4C55553EAB46079A4F263435A4; Path=/hello:響應給客戶端的Cookie; Date: Wed, 25 Sep 2012 04:15:03 GMT:響應的時間,這可能會有8小時的時區差;
響應碼
響應頭對瀏覽器來說很重要,它說明了響應的真正含義。例如200表示響應成功了,302表示重定向,這說明瀏覽器需要再發一個新的請求。 200:請求成功,瀏覽器會把響應體內容(通常是html)顯示在瀏覽器中; 404:請求的資源沒有找到,說明客戶端錯誤的請求了不存在的資源; 500:請求資源找到了,但服務器內部出現了錯誤; 302:重定向,當響應碼為302時,表示服務器要求瀏覽器重新再發一個請求,服務器會發送一個響應頭Location,它指定了新請求的URL地址; 304:當用戶第一次請求index.html時,服務器會添加一個名為Last-Modified響應頭,這個頭說明了index.html的最后修改時間, 瀏覽器會把index.html內容,以及最后響應時間緩存下來。當用戶第二次請求index.html時,在請求中包含一個名為If-Modified-Since請求頭, 它的值就是第一次請求時服務器通過Last-Modified響應頭發送給瀏覽器的值,即index.html最后的修改時間, If-Modified-Since請求頭就是在告訴服務器,我這里瀏覽器緩存的index.html最后修改時間是這個, 您看看現在的index.html最后修改時間是不是這個,如果還是,那么您就不用再響應這個index.html內容了, 我會把緩存的內容直接顯示出來。而服務器端會獲取If-Modified-Since值,與index.html的當前最后修改時間比對, 如果相同,服務器會發響應碼304,表示index.html與瀏覽器上次緩存的相同,無需再次發送(節省傳輸成本), 瀏覽器可以顯示自己的緩存頁面,如果比對不同,那么說明index.html已經做了修改,服務器會響應200。
響應頭
Last-Modified:最后的修改時間;
請求頭
If-Modified-Since:把上次請求的index.html的最后修改時間還給服務器;
狀態碼:304,比較If-Modified-Since的時間與文件真實的時間一樣時,服務器會響應304,而且不會有響正文,表示瀏覽器緩存的就是最新版本!如果不一樣,那么服務器響應200
其他響應頭
告訴瀏覽器不要緩存的響應頭: Expires: -1;有效期,表示立即過期 Cache-Control: no-cache; Pragma: no-cache;
小結:302重定向(兩次請求) 。 304,瀏覽器緩存的上次請求的.html頁面,包括最后修改時間(如果發現最后修改時間和服務器里面的時間一樣,那么響應304,無需傳輸數據,瀏覽器接收到304,則去自己的緩存中取出數據,節省傳輸成本)