使用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页面的响应时间是好的
问题:
当运行在本地主机上的项目,响应时间短。
在远程服务器上运行时,客户端响应需要10秒以上的时间。操作数据库非常快,似乎将结果从服务器发送到浏览器需要很长时间。
当结果为空时,即使来自远程服务器,响应时间也很短。
如何缩短响应时间?
json结果是:{“msg”:null,“showList”:[{“id”:1,“searchDes”:“淀粉中蛋白质含量> = 11“},{”id“:2,”searchDes“:”豆类中的蛋白质含量> = 11“},{”id“:3,”searchDes“:” > = 11" }]}。 – 2010-12-19 04:40:56
我不知道这个结果如何花费如此长的时间在浏览器中显示。 – 2010-12-19 04:44:00
起初,我只是使用。然后我尝试了@JSON(serialize = false)来反序列化get方法,以便这些方法不会在从java到json的转换过程中执行。他们都未能缩短时间。正常jsp页面的响应时间很好 –
2010-12-19 06:12:20