我正在寻找一种很好的方法来缓存 AJAX 查询的结果,这样同一用户就不必在同一页面上重复相同的查询两次。我使用 Hash
将一些东西放在一起,效果很好,但我不确定是否有更好的方法可以使用。这是我想出的粗略片段,应该可以给您一个大概的想法:
var ajaxresults;
document.observe("dom:loaded", function() {
ajaxresults = new Hash();
doAjaxQuery();
});
function doAjaxQuery(){
var qs = '?mode=getSomething&id='+$('something').value;
if(ajaxresults.get(qs)){
var vals = (ajaxresults.get(qs)).evalJSON();
doSomething(vals);
}else{
new Ajax.Request('/ajaxfile.php'+qs,{
evalJSON: true,
onSuccess: function(transport){
var vals = transport.responseText.evalJSON();
ajaxresults.set(qs,transport.responseText);
},
onComplete: function(){
doSomething(vals);
}
});
}
}
最佳答案
您是否尝试通过定义缓存内容 header 来缓存 AJAX 请求。这是另一种方式,您的浏览器将负责缓存。您不必在库中创建任何哈希来维护缓存数据。
High performance websites讨论了很多关于这个。我不太了解 PHP,但在 .Net 世界中有一种方法可以在将响应写入流之前设置缓存 header 。我相信 PHP 中也应该有类似的方法。
关于javascript - 使用原型(prototype)缓存 AJAX 查询结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1921345/