Сжатие компонентов с помощью gzip - Java EE

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

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


person GURU-MVG    schedule 02.03.2010    source источник
comment
Какой контейнер сервлетов вы используете? - вы можете, например, настроить Tomcat для выполнения gzip на лету.   -  person nos    schedule 02.03.2010


Ответы (5)


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

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

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

person Guido    schedule 02.03.2010

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

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

Он также доступен через maven central.

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

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


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

<Connector compression="on">

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

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

person BalusC    schedule 02.03.2010
comment
Я пробовал упомянуть в этой статье balusc.blogspot.com/2009 / 02 /. Но YSlow по-прежнему показывает, что файлы (JS, CSS) не отправляются с сервера в сжатом режиме. Любые мысли / предложения приветствуются. Спасибо - person GURU-MVG; 03.03.2010
comment
Вы не путаете сжатие с минификацией? - person BalusC; 03.03.2010
comment
Да, я думаю, здесь нам нужно сжать файлы js, css и отправить их клиенту с сервера. пожалуйста, укажите мне, если я неправильно понимаю. - person GURU-MVG; 03.03.2010
comment
Трудно сказать, поскольку у меня нет доступа к вашей среде, и вы, по-видимому, не можете самостоятельно проверить / проверить работу. - person BalusC; 03.03.2010
comment
Как я сказал ранее, хотя я выполняю сжатие на сервере, я все еще могу видеть «Уровень F при сжатии компонентов с помощью gzip» в YSlow. В любом случае для достижения файлов сжатия gzip (JS, CSS) с сервера. - person GURU-MVG; 04.03.2010
comment
Причина может быть во многом. Отредактировал неправильный файл server.xml, отредактировал неправильный соединитель, не перезагрузил сервер, протестировал с файлами, которые все еще находятся в кеше браузера, браузер не поддерживает сжатие и т. Д. - person BalusC; 04.03.2010
comment
@BalusC: какова будет конфигурация для weblogic, похоже? - person Narayan; 17.08.2012

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

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

person CoolBeans    schedule 27.03.2010