2017-02-24 115 views
2

我的服務器向客戶端發送包含許多組件的頁面。 我所有的圖片,js和css都被緩存。無緩存重新驗證的重新加載頁面

在我的網頁上,有一個JavaScript這樣的:

function refresh(){ 
    window.location.reload(); 
} 
var timer = setInterval("refresh()", 60000); 

其實,我需要經常刷新我的網頁,以驗證是否有我的服務器上的新信息。

但是,問題是:當我重新加載我的頁面時,我的所有組件(圖片,css,js ...)都被重新驗證。我想檢查我的信息,但不是所有組件。

所以,我想知道是否有可能重新驗證只有我的網頁的一部分,沒有圖片,JS和CSS重新確認

感謝

+0

當你說我的更新頁面的一部分,你說的是一些文件或HTML或精確 –

+0

其實什麼,我重裝我的網頁,並與新的信息獲取HTML。此頁面包含緩存的圖片,js和css。我只是想獲取我的HTML並使用緩存而不是重新驗證所有組件 –

回答

0

嘗試使用AJAX加載代替:僅加載新來自服務器的信息。 而且,自動重新加載頁面對用戶來說非常煩人。在JS,CSS喜歡的網址的末尾

0

添加查詢隨機值,

<script src="a.js?timestamp=1234567"> 

並改變每個頁面加載的時間戳值。

+0

此解決方案與我的目標相反,不是嗎?我想使用更多的緩存,而不是避免它。 –

0
header("Expires: Tue, 01 Jan 2000 00:00:00 GMT"); 
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); 
header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0"); 
header("Cache-Control: post-check=0, pre-check=0", false); 
header("Pragma: no-cache"); 
+2

請給出你正在提議的不同標題的解釋。只要把它們放在OP上,就會有隨機複製和粘貼以及貨運結果的風險。 – filmor

+0

這是我對png的響應標題:Cache-Control:public,must-revalidate,max-age = 7200。所以,如果我不到2個小時後回到我的頁面,我將使用我的緩存。但是,如果我在一分鐘後自動重新加載頁面,我將在使用它之前重新驗證緩存 –

0
You can use local storage to check the page first time or reload then avoid validate in document loading. 

// Check browser support 
if (typeof(Storage) !== "undefined") { 
// Store 
localStorage.setItem("storage", "reload"); 
// Retrieve 
if(localStorage.getItem("reload") == "reload") 
{ 
var isReload = true; 
} 
} 
if(!isReload) 
{ 
    //validation logic 
} 

function refresh(){ 
window.location.reload(); 
} 
var timer = setInterval("refresh()", 60000); 


//you have to clear the storage once you are logging out or leaving 
function removeloacalstorage(name) 
{ 
    //here name is "storage" 
    localStorage.removeItem(name); 
}