F5和CTRL F5的區別

2022-02-09 02:48:43 字數 3456 閱讀 9093

我司的**是框架結構的,乙個頁面裡有多個iframe.正因為這個原因,每次當我自信滿滿的把修改過的js檔案提交到svn上後,沒過多久,某個後台程式設計師就會來找我說:怎麼js還報錯呢,我已經ctrl+f5了啊,你提交對了嗎.我只好到他座位上拿起滑鼠進行操作:右鍵->本幀->在新標籤中開啟新幀->ctrl+f5->切換到原標籤->f5.這一番操作之後,終於對了.同樣的事情已經發生過很多次了.這也證明了不少程式設計師同志還是不夠了解瀏覽器的快取機制.

問題的根本原因就是,在火狐裡,ctrl+f5清除不了框架頁面的快取.包括框架頁面本身和其所有的嵌入元素(.js,.css,.jpg等).所以本文的真正標題是"firefox中如何才能跳過快取重新整理框架內的頁面".首先我要講一下相關的基礎知識.

一.讀取快取

搞web開發的經常會說:有快取,ctrl+f5一下.或者:有快取,ctrl+shift+del清一下.那麼你知道瀏覽器有幾種方式來讀取快取檔案嗎.從是否傳送了http請求來區分,我覺的可以分兩種:

1.瀏覽器從伺服器返回的過期時間判斷得出,該檔案還沒有過期,所以直接從快取資料夾讀取快取檔案,顯示網頁,並沒有走任何網路連線.

2.瀏覽器傳送http請求,請求頭中包含了if-modified-since 和 if-none-match欄位.讓伺服器來判斷是否應該讀取快取檔案.如果伺服器返回304響應,無響應實體,表示伺服器認為這個檔案沒有變化.可以使用快取中的對應檔案,這時瀏覽器才會讀取快取.(如果不了解http,可以買本看看.或者直接rfc2616)

我把第一種讀取快取的方式稱之為"無請求讀取快取",第二種方式稱之為"無修改讀取快取".

二.重新整理方式

1.最常用的,點選瀏覽器的重新整理按鈕,或者按下f5

2.ctrl+f5,功能是跳過快取重新整理

3.瀏覽器位址列上回車,ie裡把這種請求方式歸為"導航"操作

在讀取快取方面,這三種重新整理方式的表現都不一樣.第三種方式的表現通常是只重新整理主頁面檔案,其他內嵌檔案全部"無請求讀取快取".大部分開發者都不會這麼重新整理頁面,所以本次試驗不對比這種重新整理方式.

三.f5和ctrl+f5的區別

本文的試驗部分只針對f5和ctrl+f5兩種重新整理方式做對比.這裡講一下為什麼f5不能跳過快取,而後者可以.答案就是傳送的請求頭不一樣.而且不同的瀏覽器傳送的請求頭也有一些區別.

1.f5觸發的http請求的請求頭中通常包含了if-modified-since 或 if-none-match欄位,或者兩者兼有.如果伺服器認為被請求的檔案沒有發生變化,則返回304響應,也就沒有跳過快取.

2.ctrl+f5觸發的http請求的請求頭中沒有上面的那兩個頭,卻有pragma: no-cache 或 cache-control: no-cache 字段,或者兩者兼有.伺服器看到no-cache這樣的值就會把最新的檔案響應過去.也就跳過了快取.

試驗題目為:使用f5和ctrl+f5在包含iframe的頁面上進行重新整理操作,五大瀏覽器各自的表現不同.本次試驗使用fiddler監測網路請求,而且不考慮快取相關的http響應頭的影響.

主頁面index.html原始碼為

框架頁面frame.html原始碼為

一.ie 9序號1-6的請求為f5的操作,序號7-12的請求為ctrl+f5的操作.可見,在ie下,使用ctrl+f5能讓主頁面和框架頁面的所有資源檔案都跳過快取.

二.firefox 18

序號1-6的請求為f5的操作,序號7-9的請求為ctrl+f5的操作.可見,在firefox下,使用ctrl+f5只能讓主頁面及其資源檔案跳過快取,而框架頁面及其資源檔案完全"無請求讀取快取".

三.chrome 22

序號1-5的請求為f5的操作,序號7-9的請求為ctrl+f5的操作.可見,在chrome下,和firefox類似,使用ctrl+f5只能讓主頁面及其資源檔案跳過快取,而框架頁面及其資源檔案完全"無請求讀取快取".詭異的是,如果在當前頁面按過一次ctrl+f5,則每次在該頁面按下f5的時候,主頁面的http請求中都會加入乙個pragma: no-cache請求頭,也就是說,瀏覽器會記憶.序號1的請求就是這種情況.更詭異的是,f5操作下,frame.html始終是"無請求讀取快取",這和其他瀏覽器表現不一樣.更麻煩的是,chrome不能用右鍵把框架頁面提出來.

四.opera 12.50

序號1-6的請求為f5的操作,序號7-12的請求為ctrl+f5的操作.可見,在opera下,表現更加不一樣.即使只按f5,主頁面的請求(序號1)也有pragma: no-cache請求頭,ctrl+f5下,除了框架頁面本身(序號8),所有的資源檔案都跳過了快取.這一點比較接近ie

五.safari

序號1-5的請求為f5的操作,safari不支援ctrl+f5.和opera類似.f5會讓主頁面的請求(序號1)中包含pragma: no-cache請求頭.既然不支援跳過快取,那麼不管是不是框架頁面,在safari中只能點選單清除快取了.

根據以上對比可以看出,只有ie瀏覽器的表現是我們想要的.這裡給出firefox下的解決辦法.

1.安裝擴充套件

2.安裝uc指令碼 

uc指令碼是專業的火狐玩家使用的,這裡順便講一下我是如何實現這個功能的.有興趣玩火狐指令碼的可以看一下.實在看不懂可以跳過.

//在瀏覽器主視窗繫結keydown事件

location == "chrome://browser/content/browser.xul" && addeventlistener("keydown", function (event) )

}, false);

//開始重新整理主頁面

content.location.reload(true);

})(content)

}//捕獲模式,第一時間觸發事件處理函式.

}, true)

安裝該擴充套件後,按下ctrl+f5能像ie一樣,讓所有的框架頁面全都跳過快取重新整理.至於多層框架(框架中的框架),這個擴充套件不適用,我覺的各位程式設計師不會那麼倒霉.

ctrl F5重新整理的乙個問題

今早上我把eclipse的server啟動,並且相關網頁 選單欄所在頁面 已經登入成功,突然想起老大讓我修改左邊選單欄某個選單的鏈結位址,我到資料庫找到選單鏈結表修改了該選項對應的url後,到瀏覽器ctrl f5重新整理頁面,頁面報了404 這才明白了 360瀏覽器 ctrl f12相比於普通重新整...

f5 會話保持 負載均衡 F5會話保持

最近專案中需要使用f5做負載均衡,將相關資料記錄下來。以下是f5變更申請中的相關引數說明,我們就以此順藤摸瓜,我們挑幾個重要引數去學習吧。伺服器實際位址與埠 提供服務的真實伺服器ip位址與提供服務的埠。對外服務位址與埠 f5裝置向外提供服務的ip位址與埠,此選項可向網路處申請。負載均衡演算法 f5裝...

F5隨便寫寫

f5是鏈路負載均和和伺服器負載均衡方面的領先產品,特別是在伺服器負載均衡,在中國可謂是一家獨大,當然國內的產品也逐步的崛起如深信服。f5相關資訊 2 命令列下可以使用root default 這是超級管理員在這個賬號下可以做很多操作比如cd share images下使用ls檢視檔案情況,switc...