第一次請求
請求:
復制代碼 代碼如下:GET /pic/201408/102.jpg HTTP/1.1Host: www.jb51.netConnection: keep-aliveCache-Control: no-cacheAccept: image/webp,*/*;q=0.8Pragma: no-cacheUser-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.66 Safari/537.36Referer: http://www.jb51.net/Accept-Encoding: gzip,deflate,sdchAccept-Language: zh-CN,zh;q=0.8響應:
復制代碼 代碼如下:HTTP/1.1 200 OKContent-Length: 66529Content-Type: image/jpegLast-Modified: Tue, 19 Aug 2014 12:23:54 GMTAccept-Ranges: bytesETag: "029e570a8bbcf1:1ae2"Server: Microsoft-IIS/6.0X-Powered-By: ASP.NETDate: Wed, 20 Aug 2014 00:29:03 GMTxxx
第二次請求
請求:
復制代碼 代碼如下:
GET /pic/201408/102.jpg HTTP/1.1Host: www.jb51.netConnection: keep-aliveCache-Control: max-age=0Accept: image/webp,*/*;q=0.8Pragma: no-cacheIf-Modified-Since: Tue, 19 Aug 2014 12:23:54 GMTUser-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.66 Safari/537.36If-None-Match: "029e570a8bbcf1:1ae2"Referer: http://www.jb51.net/Accept-Encoding: gzip,deflate,sdchAccept-Language: zh-CN,zh;q=0.8響應:
復制代碼 代碼如下:HTTP/1.1 304 Not ModifiedLast-Modified: Tue, 19 Aug 2014 12:23:54 GMTAccept-Ranges: bytesETag: "029e570a8bbcf1:1ae2"Server: Microsoft-IIS/6.0X-Powered-By: ASP.NETDate: Wed, 20 Aug 2014 00:29:54 GMTHTTP緩存是為了節省網絡傳輸數據量,服務器端的資源沒有變化時返回304且內容為空。Last-Modified和ETag都是用于HTTP緩存,瀏覽器在第二次請求時會將其傳回給服務器用于判斷資源是否有變化。ETag是HTTP/1.1標準開始引入的,它是對Last-Modified的補充,主要原因有以下幾點:
?一些周期性修改的文件,修改時間變了但內容沒變,此時不希望重新GET;
?一些文件修改非常頻繁,比如1秒內修改了多次,Last-Modified只能精確到秒;?一些服務器不能得到文件修改的精確時間;說明:HTTP/1.1標準沒有規定Etag的內容是什么或者說要怎么實現,唯一規定的是Etag需要放在引號內。
新聞熱點
疑難解答