瀏覽器: F5 和 Ctrl+F5的區別

剛修改了所有的首頁,全部加上了幫助firefox來創造世界奇蹟!

不過現在有個問題,好幾個首頁必須按下ctrl+f5才能看到最新的效果。網上找了一片說f5和ctrl+f5區別的文章,寫的很全面。

--

引:http://morganchengmo.spaces.live.com/blog/cns!9950CE918939932E!2144.entry

Browser: F5 vs Ctrl+F5

在瀏覽器裏中,按F5鍵或者點擊Toobar上的Refresh/Reload圖標(簡稱F5),和做F5同時按住Ctrl鍵(簡稱Ctrl+F5),效果是明顯不一樣的,通常Ctrl+F5明顯要讓網頁Refresh慢一些,到底兩者有什麼區別呢?

在上一篇技術文章中,說到了Expires、Last-Modified/If-Modified-Since和ETag/If-None-Match這些HTTP Headers,F5/Ctrl+F5和這些有莫大關係。

假如我第一次訪問過http://www.example.com,這個網頁是個動態網頁,每次訪問都會去訪問Server,但是它包含一個一個靜態資源http://www.example.com/logo.gif,瀏覽器在顯示這個網頁之前需要發HTTP請求獲取這個logo.gif文件,返回的HTTP response包含這樣的Headers:

Expires: Thu 27 Nov 2008 07:00:00 GMT 
Last-Modified: Fri 30 Nov 2007 00:00:00 GMT

那麼瀏覽器就會cache住這個logo.gif文件,直到2008年11月27日7點整,或者直到用戶有意清空cache。

下次我再通過bookmark或者通過在URI輸入欄直接敲字的方法訪問http://www.example.com的時候,瀏覽器一看本地有個logo.gif,而且它還沒過期呢,就不會發HTTP request給server,而是直接把本地cache中的logo.gif顯示了。

F5的作用和直接在URI輸入欄中輸入然後回車是不一樣的,F5會讓瀏覽器無論如何都發一個HTTP Request給Server,即使先前的Response中有Expires Header。所以,當我在當前http://www.example.com網頁中按F5的時候,瀏覽器會發送一個HTTP Request給Server,但是包含這樣的Headers:

If-Modified-Since: Fri 30 Nov 2007 00:00:00 GMT

實際上Server沒有修改這個logo.gif文件,所以返回一個304 (Not Modified),這樣的Response很小,所以round-trip耗時不多,網頁很快就刷新了。

上面的例子中沒有考慮ETag,如同在上一篇技術文章中所說,最好就不要用ETag,但是如果Response中包含ETag,F5引發的Http Request中也是會包含If-None-Match的。

那麼Ctrl+F5呢? Ctrl+F5要的是徹底的從Server拿一份新的資源過來,所以不光要發送HTTP request給Server,而且這個請求裏面連If-Modified-Since/If-None-Match都沒有,這樣就逼着Server不能返回304,而是把整個資源原原本本地返回一份,這樣,Ctrl+F5引發的傳輸時間變長了,自然網頁Refresh的也慢一些。

實際上,爲了保證拿到的是從Server上最新的,Ctrl+F5不只是去掉了If-Modified-Since/If-None-Match,還需要添加一些HTTP Headers。按照HTTP/1.1協議,Cache不光只是存在Browser終端,從Browser到Server之間的中間節點(比如Proxy)也可能扮演Cache的作用,爲了防止獲得的只是這些中間節點的Cache,需要告訴他們,別用自己的Cache敷衍我,往Upstream的節點要一個最新的copy吧。

在IE6中,Ctrl+F5會添加一個Header

Pragma: no-cache


在Firefox 2.0中,Ctrl+F5會添加兩個 
Pragma: no-cache 
Cache-Control: max-age=0

作用就是讓中間的Cache對這個請求失效,這樣返回的絕對是新鮮的資源

轉自:http://www.cnblogs.com/cxd4321/archive/2009/03/11/1408425.html

發佈了65 篇原創文章 · 獲贊 4 · 訪問量 45萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章