2010-12-18 39 views
1

使用Ajax将请求发送到操作,结果类型为json。为struts2使用json插件。结果是正确的,但需要很长时间。Struts2 + jsonplugin:响应需要很长时间才能在浏览器中显示来自远程服务器

下面是struts.xml中的内容:

<package name="FoodCompositionSearchajax" extends="json-default"> 
     <action name="addSearchCondition" class ="com.fmOnline.action.FmzxMenuCompositionSearchAction" enter code here 
method="addSearchCondition"> 
      <result name="success" type="json"> 
      <param name="excludeProperties"> 
    showList\[\d+\]\.foodStr,showList\[\d+\]\.nourishStr, 
    showList\[\d+\]\.searchFunction,showList\[\d+\]\.num1, 
    showList\[\d+\]\.num2,showList\[\d+\]\.danwei, 
    showList\[\d+\]\.nourishname,showList\[\d+\]\.resultmap, 
    dataList, foodList, foodStr, map, nourishList, nourishStr, 
    num1, num2, paramList, searchDes, searchFun 
    </param> 
      </result> 
    </action> 
</package> 

<param name="includeProperties">不起作用,所以使用<param name="excludeProperties">代替。

结果json包含一个列表(showList,包含2个字符串属性,元素的数量从1到6变化)和一个字符串。我已经提醒客户端页面中javascript的结果内容,并且<param name="excludeProperties">有效。 json结果如下: {“msg”:null,“showList”:[{“id”:1,“searchDes”:“淀粉中的蛋白质含量> = 11”},{“id”: 2,“searchDes”:“豆类中的蛋白质含量> = 11”},{“id”:3,“searchDes”:“禽类中的蛋白质含量”= 11“}]}

首先,我用<result type="json"/>。我虽然很长时间的原因可能是一个太大的对象。然后我尝试了@JSON(serialize = false)来反序列化get方法,以便这些方法不会在从java到json的转换过程中执行。最后我使用了excludeProperties。他们都成功地返回较小的对象,但未能缩短时间。一个正常的JSP页面的响应时间是好的

问题:

  1. 当运行在本地主机上的项目,响应时间短。

  2. 在远程服务器上运行时,客户端响应需要10秒以上的时间。操作数据库非常快,似乎将结果从服务器发送到浏览器需要很长时间。

  3. 当结果为空时,即使来自远程服务器,响应时间也很短。

如何缩短响应时间?

回答

0

我用json-lib-2.3-jdk15.jar替换了jsonplugin,问题解决了。真的很感谢你的帮助〜现在很开心O(∩_∩)O〜

0

根据您提供的信息,我会首先查看JSON响应大小。你提到,当响应为空时,响应时间很短。可以直接在浏览器中创建AJAX请求,也可以使用Firebug(Firefox)等调试工具查看响应。响应可能非常大,并且速度缓慢是将Java对象编组为JSON响应。

如果JSON响应非常大,并且不需要返回所有的信息,则可能会发现创建一个仅包含所需字段的对象并将其编组后很容易。

更新

好了,我们可以排除反应过大。是否有一个原因,你有这么大的excludeProperties列表?你可能想尝试评论一下,看看它是否有帮助。否则,也许它的服务器很慢?

+0

json结果是:{“msg”:null,“showList”:[{“id”:1,“searchDes”:“淀粉中蛋白质含量> = 11“},{”id“:2,”searchDes“:”豆类中的蛋白质含量> = 11“},{”id“:3,”searchDes“:” > = 11" }]}。 – 2010-12-19 04:40:56

+0

我不知道这个结果如何花费如此长的时间在浏览器中显示。 – 2010-12-19 04:44:00

+0

起初,我只是使用。然后我尝试了@JSON(serialize = false)来反序列化get方法,以便这些方法不会在从java到json的转换过程中执行。他们都未能缩短时间。正常jsp页面的响应时间很好 – 2010-12-19 06:12:20

相关问题