代码之家  ›  专栏  ›  技术社区  ›  Mickel

如何在jquery中缓存$.post请求的结果?

  •  3
  • Mickel  · 技术社区  · 15 年前

    我有一个小的jquery脚本,它通过查看一个ID来获取信息。

    防止多次请求相同数据的最佳方法是什么(例如,jquery中缓存的最佳实践是什么)?

    我试过用 $.post $.ajax 选项“cache”设置为true,但请求被多次发送。

    保存收集的数据并使用集合查看是否需要请求,这样做更好吗?

    欢迎有任何想法和建议!

    如果重要的话,我在服务器端使用ASP.NET MVC。

    1 回复  |  直到 15 年前
        1
  •  5
  •   Christian C. Salvadó    15 年前

    这个 cache 您在文档中看到的选项是指浏览器的缓存。

    您可以实现 自我记忆 函数在许多方面,其目标是确定参数的函数结果( id 在您的情况下)只计算一次。

    由于您使用的是Ajax请求,我建议您也使用回调参数,例如:

    var getInfo = (function () {
      var cache = {}; // results will be cached in this object
    
      return function (id, callback) {
        if (cache[id] != null) { // if exist on cache
          callback(cache[id]);
          return;
        }
        // doesn't exists on cache, make Ajax request and cache it
        $.post("info.url", { "id": id }, function (data) { 
          cache[id] = data; // store the returned data
          callback(data);
        });
      };
    })();
    

    示例用法:

    getInfo(5, function (data) {
      alert(data);
    });