2012-02-09 2 views
1

Это не делает большой разницы, я знаю, но в JSF 2 я могу вывести ресурс (например, CSS), в 1 из двух способов:JSF: оптимизированы ли компоненты ресурсов?

а) Используя стандартный HTML <link> компонент и абсолютный путь к компоненту. Это рассматривается как текст и поэтому не встроено в компонент.

b) Использование jsf <h:stylesheet> и установка его имени и библиотеки.

Теперь, если я пишу основной сайт шаблона, то, что не изменится (исправлено), мне лучше использовать простой текст и дать абсолютные пути к ресурсам? Есть ли какие-либо изменения в производительности, даже если они незначительны, между использованием этого и jsf-компонентом?

Поддерживает ли JSF доступ к этому, так что ему не нужно искать ресурс каждый раз, когда страница отображается?

То же самое касается всех типов ресурсов, изображений и javascript.

ответ

3

optimizat ион на самом деле зависит от используемой реализации JSF, но да, и Mojarra и MyFaces очень оптимизировали производительность обработки ресурсов. Учитывается каждая возможность кеширования на стороне сервера и на стороне клиента. Наиболее доступные ресурсы кэшируются в памяти сервера, передача ввода-вывода идет по каналам, установлены соответствующие заголовки ответов ETag и Last-Modified и т. Д. В случае Mojarra хорошей отправной точкой для проверки того, как это все обрабатывается, является com.sun.faces.application.resource.ResourceHandlerImpl#handleResourceRequest() метод.

+0

О, я вижу, большое спасибо, поэтому в реальном выражении нет абсолютно никакой разницы в производительности между обычным текстом и использованием компонента jsf из-за этого кеширования? Это очень интересно, я на самом деле думал, что использование компонентов jsf для вывода ресурсов имеет штраф за производительность или что-то – arg20

1

его не <h:stylesheet> но <h:outputStylesheet>

компоненты JSF преобразуются в обычный HTML в момент визуализации, следовательно, когда вы видите исходный код вашей страницы, вы не найдете какой-либо JSF компонента всех JSF компонентов автоматически преобразуется в соответствии html.

этот тег будет преобразован в HTML, как следовать

<h:outputStylesheet library="css" name="style.css" /> 

HTML выход ...

<link type="text/css" rel="stylesheet" 
    href="/JavaServerFaces/faces/javax.faces.resource/style.css?ln=css" /> 

Предупреждение

When render CSS file via <h:outputStylesheet /> tag, remember put the <h:head /> 
tag as well; Otherwise the css file will not render successful. 

см http://www.mkyong.com/jsf2/how-to-include-cascading-style-sheets-css-in-jsf/

Смежные вопросы