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

标签 javascript php jquery

我有一个关于代码而不是用户体验的问题,我有 JS:

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

上面的 JS 从单选按钮和复选框中获取内容,并刷新页面以显示依赖关系。例如,如果我选中"is",并且依赖项是“是,显示文本框”,则上述内容有效!

我想知道的是,是否有更好的方法来做同样的事情,但以更友好的方式(有时会导致页面变慢)。特别是如果我一次性做了很多勾号/检查,当父刷新时我会错过一些!

最佳答案

如果您必须访问服务器来getContent(),那么它会自动变慢。

但是,如果一次发送所有元素,而不是每次进行更改时都访问服务器,则可以节省很多。

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

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

要做的一件事是,您在来回“勾选”事物时提到了缓慢,即一次不要向服务器发送多个请求(如果服务器从不回复,则超时)。所以这里的流程是:

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

请求进程预计在计时器上运行,因为 (1) 它可能会超时,并且 (2) 它需要在后台运行(不是 GUI 抢占式)

关于javascript - 如何在 JavaScript 中刷新屏幕数据而不会使页面变慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28307986/

相关文章:

javascript - 从 javascript 节点对象生成无序列表

javascript - 使用 jQuery 重新加载 <div> 后,我的整个网站向左移动,看起来很损坏

javascript - 通过外部按钮/链接进行数据表过滤

javascript - JS 数值向上或向下

javascript - 当我们使用ajax post请求上传文件时,如何取消向服务器上传文件并删除文件(上传未完成之间)?

javascript - 表的动态添加行未触发事件

javascript - 取消选择 <select> 中的顶部选项 - bootstrap multiselect

javascript - 不工作我的 javascript onblur 函数

php - 将整个数组移动到 php 中的一个位置

php - 使用 cURL 针对 PHP 进行 C++ 身份验证