有效地将JSON对象返回到AJAX调用

时间:2014-12-22 10:03:50

标签: ajax json servlets

我有一个Servlet将一个JSON对象返回给ajax调用,但由于JSON对象是由一个包含4000行的excel组成的,因此调用返回前端的时间超过两分钟......在ajax调用显示之后,JSON形成了大约两分钟的警报。请建议一种有效的方法来减少延迟。

这是我的Servlet代码

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

            response.setContentType("application/json");                
            String costpath = request.getParameter("fname");
            String revenuepath = request.getParameter("sname");                                              
            Path costpathobj = new Path(costpath); 
            Path revenuepathobj = new Path(revenuepath);

            Gson gson = new Gson();
            JsonObject myObj = new JsonObject();                
            Xlfunction xlfunction = new Xlfunction();
            boolean flag;
            try {
                  SheetBean[] sheetBean = new SheetBean[2];
                  flag = xlfunction.functionality(costpathobj,revenuepathobj,sheetBean);
                  JsonElement sheetobj = gson.toJsonTree(sheetBean);
                  myObj.add("projectInfo", sheetobj);
                  if(flag == true)
                  {
                  myObj.addProperty("success", true);
                  }
                  else
                      myObj.addProperty("success", false);
                  response.getWriter().write(myObj.toString());

            } 

这是我的AJAX电话

$.ajax({
           type: "GET",
           url: "ExcelController",
           data: "fname="+costpath+"&sname="+revenuepath,             
           dataType: "json",              
           //if received a response from the server
           success: function( data, textStatus, jqXHR) {                  
               if(data.success)
                 {
                    alert("data loaded");
                 }

1 个答案:

答案 0 :(得分:0)

鉴于问题似乎是数据从服务器传输到客户端的速度很慢,我建议在Application Server上启用GZIP压缩。如果您使用的是Tomcat,则可以将compression属性添加到server.xml中的HTTP / 1.1 Connector元素:

<Connector port="80" protocol="HTTP/1.1" ... compression="on"/>

JSON,纯文本压缩很多,减少了发送数据所需的往返次数。

您可以尝试的其他事项:

  • 减少您在任何时间发送给客户端的数据量,例如将其拆分为单独的调用,以便在需要时调用。

  • 如果您要使用数据来更新DOM,而不是处理客户端上的数据,请使用jsp输出HTML并在AJAX调用中将其返回,将辛苦工作转移到服务器侧的