2015-12-18 74 views
1

我有使用ajax請求運行home.php文件的外部js文件。爲什麼緩存在ajax請求中不清楚?

在我的代碼中一切都很好。但即使我在url中添加隨機函數,緩存也不清楚。

這是我的js代碼。

var xmlhttp = new XMLHttpRequest(); 
xmlhttp.onreadystatechange = function() { 
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { 
     alert(xmlhttp.responseText); 
    }  
} 
xmlhttp.open("GET","http://myurl/home.php?t="+Math.random(),true); 
xmlhttp.setRequestHeader("Pragma", "no-cache"); 
xmlhttp.setRequestHeader("Cache-Control", "no-cache"); 
xmlhttp.send(); 

每次我從index.php調用這個js文件,我得到緩存結果。

爲了避免緩存問題,我已經在url中添加了唯一的id。但它不起作用。所以,請給我任何建議來解決這個問題。

+0

它不能被瀏覽器緩存,如果它唯一的URL那麼瀏覽器不會已經緩存了關於它的信息,您可以使用「Firefox」或Chrome「隱身模式」進行測試。我想你有一些緩存在PHP端嘗試調試你的PHP腳本 – Armen

+0

如果我改變這個js文件中的東西,如添加警報消息,並再次從索引頁面調用,它不能直接更改。所以,我從歷史記錄清除緩存並重新運行,我得到了正確的結果。爲什麼? – Cloud

+0

你說的是'ajax' request url cache?或'js'在頁面上包含url緩存''?這2個是不同的東西 – Armen

回答

1

爲了避免jscss文件包括緩存的問題(答案在問題的評論你的問題),你必須在每次更改後自動更改其包含的鏈接,爲此,你可以求助於使用filemtime("file")包括html

一步

filemtime回報你的文件創建時間,尋找手工這裏約 - http://php.net/manual/en/function.filemtime.php

<script 
    src="http://url/some.js?t=<?php filemtime("PATH_TO_FILE/some.js") ?>" > 
</script> 

<link rel="stylesheet" type="text/css" 
    href="http://url/some.css?t=<?php filemtime("PATH_TO_FILE/some.css") ?>" > 

所以通過some.jssome.css每次修改時這樣他們的創建時間將會改變,並且您的home.php將被添加新的url鏈接(http://url/some.js?t=14....)到該資源並且bowser將不得不再次加載它們

+0

好吧,我會嘗試,如你所說。再次感謝你。 – Cloud