JSF-библиотеки для статического контента - или обычные статические файлы - производительность? - PullRequest
6 голосов
/ 14 октября 2011

У нас есть два способа обслуживания таких элементов, как изображения, javascript, css.

  • Статическая область, скажем "/images/foo.png"
  • Библиотека JSF, которая отображает что-то вроде "/javax.faces.library/foo.png?ln=images"

Последнее похоже на то, как обстоят дела в JSF. Это легко сделать. Там есть большая поддержка для этого.

Первый позволяет использовать интересные трюки в ситуации, когда производительность имеет значение. Мы можем сделать так, чтобы наш сервер не передавал / images в движок сервлета, а использовал что-то быстрее. Честно говоря, я не знаю никого, кто бы использовал это программное обеспечение, кто бы это делал, или сколько стоит, когда что-то вроде Tomcat или JBoss будет обслуживать статический контент по сравнению с чем-то нативным, таким как Apache, и сколько это против стоимости бизнес-логики. это также собирается предоставить само приложение.

Мы надеемся, что в обоих случаях изображения будут храниться в течение длительного времени, чтобы браузер мог их кэшировать. Я отмечаю, что версия JSF имеет часть строки запроса, поэтому надеюсь, что браузер не решит, что знает лучше и отказывается кэшировать. Нам нужно посмотреть на некоторые следы, чтобы увидеть, что происходит.

Так что же делать? Библиотеки JSF? Воспользуйтесь преимуществами поддержки таких вещей, как элементы управления h: outputScript и h: outputStylesheet? Или область изображений сайта?

Спасибо - Ричард

Ответы [ 2 ]

1 голос
/ 24 мая 2013

По соображениям производительности я чувствовал себя лучше, используя нестандартное решение, где jsf НЕ управлял зависимостями моей страницы. Наличие собственного механизма разрешения зависимостей с помощью своего рода сервлета «Управление ресурсами» дает вам большую гибкость в том, что вы можете делать, когда запрашивается каждый ресурс

Некоторые из преимуществ этого

  • Добавление заголовков кэширования в соответствии с вашими требованиями
  • Возможность обслуживания объединенных ресурсов вместо обслуживания одного ресурса за раз. Поэтому, если вы создадите URL-адреса своего ресурса, такие как "http://server.com/app/resources/one,two.js,, вы можете обслуживать оба файла one.js и two.js в одном запросе, объединяя их в памяти.
  • Возможность использовать пользовательскую стратегию аннулирования кэша, просто изменяя параметры запроса на изображениях. например http://server.com/app/resources/images/apple.jpg?version=1 где «версия» может быть версией вашего приложения.
  • Поддерживайте собственную структуру каталогов статических ресурсов и не нужно строго полагаться на структуру каталогов ресурсов jsf.

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

0 голосов
/ 23 февраля 2016

Есть несколько вещей, которые вы можете сделать, чтобы улучшить производительность ваших экранов и статический контент / библиотеки / java-скрипты

  1. Фильтр GZIP значительно сократит время начальной загрузки,Сжимает содержимое страницы при передаче клиентскому браузеру.См. https://stackoverflow.com/a/35567295/5076414
  2. . Вы можете дополнительно реализовать cacheFilter , чтобы привести производительность ваших экранов в соответствие с пользовательским интерфейсом на основе JavaScript.Это позволит кэшировать статическое содержимое вашего экрана, такое как значки, изображения, таблицы стилей, JavaScript и т. Д. Вы можете контролировать, что кэшировать, а что исключать.См. https://stackoverflow.com/a/35567540/5076414
  3. Для компонентов пользовательского интерфейса на стороне клиента вы можете использовать Primefaces , который является пользовательским интерфейсом на основе JQuery.

Как проверить, использует ли мой экран gzip и кеш

Чтобы проверить, используется ли уже ваш контент, используйте gzip и кеш, в вашем браузере Google Chrome -> щелкните правой кнопкой мыши на экране -> проверьте -> щелкните вкладку сети -> обновите экран.Нажмите на изображения, значки, таблицы стилей и посмотрите, видите ли вы следующее в заголовке ответа

Cache-Control:max-age=2592000, если статус элемента равен 304 (из кеша)

Content-Encoding:gzip, если статус элемента 200

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