2010-12-18 38 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

相關問題