我注意到Firefox不會自動緩存GET請求。下面的代碼我使用:在Javascript中緩存GET響應Vanilla
var ajax = new XMLHttpRequest();
ajax.open("GET","page.php?val=" + val,true);
ajax.send();
與jQuery可以給cache: true;
,我怎麼能保存在與香草的Javascript(客戶端)的緩存?也可以決定多久?你能給我一個代碼的例子嗎?先謝謝你!
我注意到Firefox不會自動緩存GET請求。下面的代碼我使用:在Javascript中緩存GET響應Vanilla
var ajax = new XMLHttpRequest();
ajax.open("GET","page.php?val=" + val,true);
ajax.send();
與jQuery可以給cache: true;
,我怎麼能保存在與香草的Javascript(客戶端)的緩存?也可以決定多久?你能給我一個代碼的例子嗎?先謝謝你!
Web緩存在很大程度上受服務器發送的頭部控制(Expires:等)。瀏覽器有時會「作弊」,即使標題允許它們也不會真正緩存......可能是因爲用戶使用他們的UI關閉了緩存,例如通過將緩存大小設置爲零。但是,「欺騙」其他方向的瀏覽器,即使標頭不允許,仍然會緩存,這是非常不尋常的。
如果緩存不在您身上,它是文件和服務器(或者瀏覽器配置)的函數,而不是任何瀏覽器類型或版本。 (要用不同的方式說同樣的事情,如果服務器發送了所需的頭文件,您的Firefox將緩存得很好)。不同的服務器和不同的提供者可以通過各種方式控制頭文件。對於Apache服務器,本質可能在「.htaccess」文件中,其預先編寫的模板通常可用。
第一次接近HTML4,無論您使用什麼工具,無論您的程序如何操作,都無法控制客戶端的Web緩存。新的「在線應用程序緩存」或「appcache」在HTML5中提供了一個通用的例外......但是還有其他限制,例如關於「每個站點一個」和「相同來源」的限制。
可以緩存使用簡單的哈希響應,這樣的:
var cache = {};
function getData(variable) {
if (cache[variable]) {
return cache[variable];
}
// previous ajax code to get the data...
// in the response handler, do:
cache[variable] = data;
}
這是一個天真的實施緩存機制:僅適用於網頁(即壽命,直到頁面刷新或導航遠離),沒有任何過期機制,以及其他缺點,我敢肯定。例如,您可以使用localStorage
來解決刷新問題。
但是,嘿,我沒有得到報酬寫這:)。
'cache:true',不*保證*文件將被緩存。你需要從你的服務器('Cache-Control','Last-Modified'等)發出正確的與緩存相關的頭文件,*然後* FireFox和jQuery都有可能緩存文件。請參閱http://www.mnot.net/cache_docs/ – Matt
Internet Explorer自動保存GET響應。我第一次可以說Internet Explorer獲勝:D – user2626246