Сжатие компонентов с помощью gzip - Java EE - PullRequest
2 голосов
/ 02 марта 2010

Я хочу улучшить внешнюю производительность моего приложения, поэтому я использовал инструмент YSlow в Firefox. Когда я запустил этот инструмент для своего приложения, во вкладке YSlow Grade появилось сообщение «Оценка F для компонентов Compress with gzip». Похоже, нам нужно сжимать файлы (js, css) при отправке с сервера на клиент, чтобы увеличить время отклика сервера.

Мое приложение является Java-приложением Struts. Может кто-нибудь дать мне знать, как сжимать и отправлять файлы интерфейса пользователя (JS, CSS) с сервера, чтобы время отклика увеличивалось, а мои страницы работали быстрее? Что мне нужно сделать, чтобы сжать эти файлы в Java на сервере?

Ответы [ 5 ]

6 голосов
/ 02 марта 2010

Я рекомендую использовать Servlet Filter (начиная с спецификации сервлета 2.3)

Фильтр gzip хорошо документирован, поэтому нет необходимости заново изобретать колесо:

Кроме того, некоторые контейнеры сервлетов могут делать gzip на лету. Взгляните на этот связанный вопрос .

2 голосов
/ 31 марта 2011

Для повышения производительности клиентского веб-приложения Java EE может помочь WebUtilities Java-библиотека.

Вот ссылка :: https://github.com/rpatil26/webutilities.

Он также доступен через центральный Maven .

Начиная с версии 0.0.4, это помогает соблюдать следующие правила производительности.

  1. Минимизация HTTP-запросов - может обслуживать несколько файлов JS / CSS за один запрос
  2. Кэширование на стороне клиента - добавляет правильный Cache-Control, заголовок Expires
  3. Минимизация JS / CSS на лету - с помощью YUICompressor
  4. Сжатие - поддерживает двухстороннее сжатие для кодировок gzip / deflate / compress
  5. Кэширование ответов на сервере - чтобы избежать повторной обработки неизмененных ресурсов
  6. Добавить кодировку символов - сообщить браузеру заранее
1 голос
/ 04 апреля 2011

Я рекомендую использовать Granule Tag lib the http://code.google.com/p/granule/

Это gzip и объединить javascripts, завернутый в тег g: compress

Пример кода:

<g:compress>
  <script type="text/javascript" src="common.js"/>
  <script type="text/javascript" src="closure/goog/base.js"/>
  <script>
       goog.require('goog.dom');
       goog.require('goog.date');
       goog.require('goog.ui.DatePicker');
  </script>
  <script type="text/javascript">
      var dp = new goog.ui.DatePicker();
      dp.render(document.getElementById('datepicker'));
  </script>
</g:compress>
...

0 голосов
/ 27 марта 2010

Вы уверены, что пытаетесь сжать JS и CSS, а не минимизировать их? Обычно JS и CSS кэшируются браузером после первого посещения при условии, что ваш веб-сервер правильно установил заголовки кэширования. На практике я обнаружил, что минимизация JS и CSS обычно достаточно для начальной загрузки браузером.

Есть много минифайеров JS. Например, один находится здесь .

0 голосов
/ 02 марта 2010

Обычно вы настраиваете его на уровне appserver / servletcontainer. Я не знаю, какой из них вы используете, так что вот только целевой пример Tomcat . В /conf/server.xml настройте компонент <Connector> следующим образом:

<Connector compression="on">

Вот и все. Просто добавьте compression="on". Другие серверы предоставляют сопоставимые настройки. обратитесь к его документации для деталей. Часто это точно так же, потому что они построены на Tomcat.

Дополнительные советы по YSlow в перспективе веб-приложения Java EE вы можете найти в статье блога более полезной.

...