javascript - 使用原型(prototype)缓存 AJAX 查询结果

标签 javascript caching prototypejs

我正在寻找一种很好的方法来缓存 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/

相关文章:

javascript - 如何打印对象中的嵌套对象值? VueJs

javascript - 用于 Node.js 的 ZeroMQ 是否与 Electron 兼容?

html - 对 HTML 或 CSS 进行更改时,它们在页面上不可见

javascript - 在没有 jQuery 的情况下检查 CSS 类是否存在

JavaScript 原型(prototype)可拖动

javascript - 对象字面量和返回对象的函数有什么区别?

javascript - 为什么 .hasClass 函数不起作用?

caching - Nginx 和/或 php5-fpm 记住符号链接(symbolic link)的根目录

scala - 从 scala 代码中使用 Google guava 时出现编译器错误

javascript - OSX safari/firefox 上的原型(prototype)日期格式验证错误