【问题标题】:Merging jQuery AJAX requests for Zend Framework合并 Zend 框架的 jQuery AJAX 请求
【发布时间】:2011-09-16 08:42:30
【问题描述】:

我有一个基于 Zend Framework 的 Web 应用程序,除了主页请求之外,它还向服务器生成 3 个单独的 AJAX 请求。这会严重影响 Web 服务器的性能。

我想尝试通过将所有 3 个 AJAX 请求组合成一个请求来缓解这种情况,我的 Zend Framework 应用程序可以接收该请求并由操作堆栈作为 3 个单独的请求进行处理。

欢迎对工具/技术和陷阱提出任何建议。

【问题讨论】:

    标签: php ajax zend-framework jquery


    【解决方案1】:

    从我的头顶:

    • 构建请求堆栈或队列(js 数组)
    • 向请求堆栈发送请求,而不是触发 ajax 请求
    • 发送一个包含请求栈数组的ajax请求
    • 遍历阵列服务器端并按照说明进行操作

    这类似于 ajax 请求的小型作业堆栈/队列。

    【讨论】:

    • 我正在使用 Zend Framework 视图助手来计算预期 AJAX 请求的数量。以前代码在 jQuery 中调用 $.GET 或 $.POST,现在我调用我自己的 jQuery 插件,它将每个请求保存在堆栈(js 数组)中。一旦堆栈中的请求数量与视图帮助程序中指定的数量相匹配,我就会向 Zend Framework Ajax 控制器发出一个请求,该控制器依次解析每个请求。现在的问题是这些 AJAX 调用中有几个需要发回数据。将匹配数据传递给相关请求的最佳方式是什么?
    • 再次,您应该将它们发送回捆绑并标记在一个数组中,然后您的插件对数组进行排序并进一步路由响应。您的插件基本上像请求路由器一样工作。因此,您发送给插件的每个请求都会获得一个 ID,并且在大响应数组中,您可以按 ID 找到子响应并根据需要进行处理。
    【解决方案2】:

    我听取了 Markus 的建议并创建了 2 个 jQuery 插件,一个用于排队请求,一个用于发布请求。

    Zend Framework 应用程序接收请求并遍历每个请求,将任何返回数据添加到通用响应对象,该对象是 JSON 编码并返回给客户端。

    var count = 0;
    var requests = new Array();
    
    // Add AJAX requests to the queue
    (function($){$.fn.addAjaxRequest=function(callback, ajaxArgs, initialArgs) {
            requests[count] = [callback, ajaxArgs, initialArgs];
            count++;
        }
    })
    (jQuery);
    
    // Send the queued AJAX requests to MVC
    (function($){$.fn.postAjaxRequests=function(host) {
            var response = null;
            var url = 'http://' + host + '/ajax/process-ajax-requests';
            $.ajax({
                type: 'POST',
                url: url,
                dataType: 'json',
                async: false,
                data : ({data : requests}),
                success: function(data) {
                    response = data;
                }
            });
            return response;
        }
    })
    (jQuery);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-14
      相关资源
      最近更新 更多