使用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