在瀏覽器地址欄按回車,、F5、Ctrl+F5刷新網(wǎng)頁的區(qū)別不少同學問,,不都是刷新嗎,?還有什么區(qū)別?其實,,還是有的,。其中,在地址欄按回車又分為兩種情況,。一是請求的URI在瀏覽器緩存中未過期,,此時,使用Firefox的firebug插件在瀏覽器里顯示的HTTP請求消息頭如下: Host 192.168.3.174:8080 User-Agent Mozilla/5.0 (Windows NT 5.1; rv:5.0) Gecko/20100101 Firefox/5.0 Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language zh-cn,zh;q=0.5 Accept-Encoding gzip, deflate Accept-Charset GB2312,utf-8;q=0.7,*;q=0.7 Connection keep-alive HTTP返回狀態(tài)顯示200 OK,,但是,,后臺Nginx服務(wù)器的access.log并沒有找到該請求的記錄,說明請求并沒有真正提交到HTTP服務(wù)器,。而是被瀏覽器發(fā)現(xiàn)緩存中還有 未過期的文件,,直接把請求攔截了,firebug里面顯示所謂的“請求頭消息”,、“響應(yīng)頭消息”都是瀏覽器“偽造”的,。這種刷新,使用的網(wǎng)絡(luò)流量是最小 的,,可以說完全沒有,,時間消耗也是最少的。就像你找到一盒沒有過期的牛奶,,覺得肯定沒有問題,,誰都沒告訴就喝了。 二是請求的URI在瀏覽器緩存中已過期,,此時,,firebug顯示的HTTP請求消息頭如下: Host 192.168.3.174:8080 User-Agent Mozilla/5.0 (Windows NT 5.1; rv:5.0) Gecko/20100101 Firefox/5.0 Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language zh-cn,zh;q=0.5 Accept-Encoding gzip, deflate Accept-Charset GB2312,utf-8;q=0.7,*;q=0.7 Connection keep-alive If-Modified-Since Mon, 04 Jul 2011 10:12:40 GMT 多了一行If-Modified-Since,后臺Nginx服務(wù)器的access.log也找到了該請求的記錄,,說明瀏覽器對這種情況的處理方法是:再 問一下服務(wù)器,,請求的URI在某個時間之后有沒有被修改過,,而這個時間是由上次HTTP響應(yīng)的Last-Modified決定的。服務(wù)器鑒定之后,,沒有修 改的話,,返回304 Not Modified,瀏覽器收到后,,從緩存里讀出內(nèi)容,;有修改的話,返回200 OK,,并返回新的內(nèi)容,。這種情況,就像你找到一盒已經(jīng)過期的牛奶,,于是問別人,,還能不能喝,如果別人說可以,,你就把它喝了,,如果別人說不行,那你得就另外 找一盒新鮮的牛奶,。 至于F5刷新,,其HTTP請求消息頭如下: Host 192.168.3.174:8080 User-Agent Mozilla/5.0 (Windows NT 5.1; rv:5.0) Gecko/20100101 Firefox/5.0 Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language zh-cn,zh;q=0.5 Accept-Encoding gzip, deflate Accept-Charset GB2312,utf-8;q=0.7,*;q=0.7 Connection keep-alive If-Modified-Since Mon, 04 Jul 2011 10:12:40 GMT Cache-Control max-age=0 又多了一行Cache-Control: max-age=0,意思是說,,我不管瀏覽器緩存中的文件過期沒有,,都去服務(wù)器詢問一下,相當于上次HTTP響應(yīng)的Expires暫時失效,。服務(wù)器的響應(yīng) 處理流程同上,。這種情況,就像你找到一盒牛奶,,沒有看它的有效期,,直接就問別人能不能喝。 最后是Ctrl+F5刷新,,其HTTP請求消息頭如下: Host 192.168.3.174:8080 User-Agent Mozilla/5.0 (Windows NT 5.1; rv:5.0) Gecko/20100101 Firefox/5.0 Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language zh-cn,zh;q=0.5 Accept-Encoding gzip, deflate Accept-Charset GB2312,utf-8;q=0.7,*;q=0.7 Connection keep-alive Pragma no-cache Cache-Control no-cache If-Modified-Since沒有了,,Cache-Control換成了no-cache,此外Pragma行是為了兼容HTTP1.0,,作用與 Cache-Control: no-cache是一樣的,。意思是,我不要緩存中的文件了,,強制刷新,,直接到服務(wù)器上重新下載,于是服務(wù)器的響應(yīng)處理與首次請求這個URI一樣,返回 200 OK和新的內(nèi)容,。這種刷新,,使用的網(wǎng)絡(luò)流量是最大的,也是最耗時的,。這就像你雖然發(fā)現(xiàn)了一盒牛奶,,但是把它扔掉了,直接去買一盒新的,。 延伸閱讀:http://www.cnblogs.com/cxd4321/archive/2009/03/11/1408425.html |
|
來自: java_laq小館 > 《div css》