在浏览器地址栏按回车、F5、Ctrl+F5刷新网页的区别--转
其中,在地址欄按回車又分為兩種情況。一是請求的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返回狀態顯示200 OK,但是,后臺Nginx服務器的access.log并沒有找到該請求的記錄,說明請求并沒有真正提交到HTTP服務器。而是被瀏覽器發現緩存中還有未過期的文件,直接把請求攔截了,firebug里面顯示所謂的“請求頭消息”、“響應頭消息”都是瀏覽器“偽造”的。這種刷新,使用的網絡流量是最小的,可以說完全沒有,時間消耗也是最少的。就像你找到一盒沒有過期的牛奶,覺得肯定沒有問題,誰都沒告訴就喝了。
二是請求的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服務器的access.log也找到了該請求的記錄,說明瀏覽器對這種情況的處理方法是:再問一下服務器,請求的URI在某個時間之后有沒有被修改過,而這個時間是由上次HTTP響應的Last-Modified決定的。服務器鑒定之后,沒有修改的話,返回304 Not Modified,瀏覽器收到后,從緩存里讀出內容;有修改的話,返回200 OK,并返回新的內容。這種情況,就像你找到一盒已經過期的牛奶,于是問別人,還能不能喝,如果別人說可以,你就把它喝了,如果別人說不行,那你得就另外找一盒新鮮的牛奶。
至于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,意思是說,我不管瀏覽器緩存中的文件過期沒有,都去服務器詢問一下,相當于上次HTTP響應的Expires暫時失效。服務器的響應處理流程同上。這種情況,就像你找到一盒牛奶,沒有看它的有效期,直接就問別人能不能喝。
最后是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是一樣的。意思是,我不要緩存中的文件了,強制刷新,直接到服務器上重新下載,于是服務器的響應處理與首次請求這個URI一樣,返回200 OK和新的內容。這種刷新,使用的網絡流量是最大的,也是最耗時的。這就像你雖然發現了一盒牛奶,但是把它扔掉了,直接去買一盒新的。
?
原文地址:http://blog.csdn.net/yui/article/details/6584401
轉載于:https://www.cnblogs.com/davidwang456/p/3919675.html
總結
以上是生活随笔為你收集整理的在浏览器地址栏按回车、F5、Ctrl+F5刷新网页的区别--转的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux Top 命令解析 比较详细-
- 下一篇: RSA体系 c++/java相互进行加签