如何刷新JavaScript中的屏幕数据而不会使页面变慢?

时间:2015-02-03 20:18:58

标签: javascript php jquery

我在代码和用户体验方面有疑问,我有JS:

$(document).on( "click", "input:radio,input:checkbox", function() {
        getContent($(this).parent(),0);
    });

上面的JS从无线电和复选框中获取内容,并刷新页面以显示依赖关系。例如,如果我检查是,并且依赖关系是,显示文本框,则上述工作!

我想知道的是,如果有更好的方法来做同样的事情,但是以更友好的方式,因为这有时会使页面变慢。特别是如果我一次性做很多刻度/检查,我会想念一些,因为父母会刷新!

1 个答案:

答案 0 :(得分:1)

如果您必须将服务器命中到getContent(),那么它将自动变慢。

但是,如果您每次发送所有元素而不是每次更改时都点击服务器,则可以节省很多。

然而,如果创建一个超大页面不是一个选项,那么你需要保留你的getContent()函数,但是有一个可能的解决方案,如果你还没有实现这个,那就是缓存所有您之前查询过的数据。

因此,您可以拥有一个对象(地图),其中包含定义您感兴趣的数据的键。如果定义了该键,则数据已经可用并且您将返回并直接从缓存中使用该数据。否则,您必须点击服务器。

要做的一件事,你提到了慢,因为你打勾'来回的事情是,不要一次向服务器发送多个请求(如果服务器从不回复,则超时)。所以这里的过程是:

  1. 需要数据' xyz'
  2. 该数据是否已缓存?如果是,则跳过步骤(3和4)
  3. 如果正在处理请求?如果是,则推送请求堆栈上的数据并返回
  4. 向服务器发送请求,阻止任何进一步的请求,直到回答' xyz'收到
  5. 接收答案并将数据缓存在对象(地图)中并释放请求队列
  6. 根据需要使用数据
  7. 我检查请求队列,如果不是空,则弹出下一个请求并从(2)
  8. 开始处理

    请求进程应该在一个计时器上运行,因为(1)它可以超时,(2)它需要在后台运行(不是GUI抢占)