Struts2 + jsonplugin: отображение ответа в браузере с удаленного сервера занимает много времени - PullRequest
1 голос
/ 18 декабря 2010

Отправка запроса на действие с использованием Ajax, тип результата - json. Используйте плагин JSON для Struts2. Результат верный, но занимает очень много времени.

Ниже приведено содержание 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 атрибута String, количество элементов варьируется от 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. Когда результат нулевой, время ответа короткое, даже с удаленного сервера.

Как мне сократить время ответа?

Ответы [ 2 ]

0 голосов
/ 20 декабря 2010

Я заменяю jsonplugin на json-lib-2.3-jdk15.jar, и проблема решена.Очень ценю вашу помощь ~ Так счастлив, теперь O (∩_∩) O ~

0 голосов
/ 19 декабря 2010

Основываясь на предоставленной вами информации, я сначала посмотрю на размер ответа JSON.Вы упомянули, что когда ответ нулевой, время отклика короткое.Либо сделайте запрос AJAX непосредственно в браузере, либо воспользуйтесь инструментом отладки, таким как Firebug (для Firefox), чтобы увидеть ответ.Вполне возможно, что ответ действительно велик и что замедление состоит в том, чтобы упорядочить Java-объект в ответ JSON.

Если ответ JSON действительно большой и вам не нужна вся возвращаемая информация,вам может оказаться проще создать объект, содержащий только те поля, которые вам нужны, а затем упорядочить это.

Обновление

Хорошо, мы можем исключить ответбольшой.Есть ли причина, по которой у вас такой большой список excludeProperties?Вы можете попробовать это закомментировать и посмотреть, поможет ли это.В противном случае, возможно, это ваш сервер, который работает медленно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...