我們有一個網頁,通常通過單擊F5或Ctrl-R來重新加載網頁,以便查看是否有新數據到達。如何在全高速緩存使用中手動觸發F5鍵和手動重新加載頁面
此頁面上的所有圖片永遠有一個緩存標題,所以不應該被瀏覽器重新加載。
但是,當用戶按下F5時,大多數瀏覽器會檢查每個緩存條目是否包含請求和if-modfied-since標頭。我們的HTML頁面永遠不會被緩存,但圖像應該被緩存很長時間,並且不需要詢問圖像是否被修改。這是一個無用的請求,我們希望擺脫它。
我們在頁面上有一個重新加載圖標,但用戶仍然會使用鍵盤重新加載(我寧願)。
於是,我就觸發F5和Ctrl-R鍵和手動完成重裝這樣的(順便說一句,我們使用jQuery):
<img src="someimg.png" />
<a id="reload" href="mypage.html">Reload</a>
<script type="text/javascript">
function loading() {
window.location.href = $('#reload').attr("href");
return false;
}
function isF5(e) {
return e.which == 116;
}
function isCtrlR(e) {
return e.ctrlKey && e.which == 82;
}
function triggerReloadKeys(e) {
if (isF5(e) || isCtrlR(e)) {
$('#reload').click();
}
}
$(document).bind("keydown", triggerReloadKeys);
$('#reload').click(loading);
someimg.png總是用長交付持久緩存指令。
我的第一個答案是告訴我不要接管用戶瀏覽器,並讓他刷新,如果他想。你是對的,但是我們在高峯時間高達5000頁/秒。甚至更多的圖像,因爲每個人都在重新加載頁面。我們只是想減少請求的數量,不管它們有多快。 (並且我知道我無法觸發菜單欄中的瀏覽器刷新按鈕,但我現在不關心它)。
我們非常成功地減少了我們應用程序中的請求數量,因爲我們沒有任何重新加載按鈕或F5,但是每個人都被迫使用我們自己的HTML重新加載鏈接。
什麼是可能是一起禁用F5鍵這樣的:
function triggerReloadKeys(e) {
if (isF5(e) || isCtrlR(e)) {
return false;
}
}
我不知道,如果它甚至有可能觸發F5並同時仍使用緩存強制重載和模仿行爲點擊頁面上的另一個鏈接。
任何想法?
怎麼樣使用一些ajax和使用僞推動保持頁面最新。我想大多數人會在自動獲取最新數據時停止手動重新加載頁面。 (例如。德國足球聯賽直播表) –
人們不要等待,他們只是多次按F5 – Janning