【问题标题】:Autocomplete performance improvement with caching the JSON response通过缓存 JSON 响应提高自动完成性能
【发布时间】:2014-09-22 17:16:18
【问题描述】:

我正在使用这个自动完成插件(FCBautocomplete)。我在字段中输入的每个字符以获取结果,都会向服务器发送一个请求。由于我的数据太大,我担心所有可能发生的内存崩溃以及时间。假设我有一个名为“John Smith”的联系人,将发送 10 个请求(返回所有结果,然后根据我输入的字符显示结果),这太贵了。现在我的问题是缓存如何帮助我?是否有可能缓存 JSON 响应并从该缓存响应中获取其余的搜索结果(即用户输入第一个字符并且所有结果都将作为 JSON 响应生成,当用户输入第二个字符和其余部分时字符,而不是发送另一个请求,它从缓存的 JSON 响应中搜索)。

由于我担心性能问题,请告诉我一个很好的解决方案。谢谢

【问题讨论】:

  • 为什么不用jQuery内置的自动完成功能呢?它有缓存准备使用:) jqueryui.com/autocomplete/#remote-with-cache
  • 我已经根据自己的需要开发了这个很棒的插件。所以如果你对我的问题有一个好的答案,请告诉我,thanx

标签: jquery json autocomplete fcbkcomplete


【解决方案1】:

您在 ajax 调用上尝试此代码。

    var cache = {};
$.ajax({
    url : ajax.url + '&suggestions=' + $.trim(queryText),
    type : 'POST',
    dataType : 'json',
    success: function(data){
        if(data.value.length > 0){
            addItemFeed(data, etext);
            cache = data;
            bindEvents();
        }else{
            feed.hide();
        }
    }
});

只需分配一个名为缓存的对象并将您的数据放在缓存中,并尝试在页面的任何位置访问此结果以避免不必要的 ajax 调用。

希望这会有所帮助...!!!

【讨论】:

    【解决方案2】:

    在javascript中定义一个全局变量可以解决你的查询。

    window.AutoCompleteCacheVariable = "";
    

    【讨论】:

      猜你喜欢
      • 2015-06-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-30
      • 2012-12-30
      • 2010-10-23
      • 1970-01-01
      • 1970-01-01
      • 2014-01-30
      相关资源
      最近更新 更多