2012-02-09 151 views
1

它没有多大的差别,我知道,但是在JSF 2我可以输出(例如CSS)的资源,以两种方式1:JSF:是否优化了资源组件?

a)使用标准的HTML <link>组件和组件的绝对路径。这被视为文本,因此不构建到组件中。

b)使用jsf <h:stylesheet>并设置其名称和库。

现在,如果我正在写主模板网站,不会改变(固定)的东西,我最好使用纯文本并提供绝对路径的资源?在使用它和jsf组件之间,性能有没有改变,即使是微不足道的?

JSF是否优化对此的访问,以便每次页面呈现时都不必定位资源?

这同样适用于所有类型的资源,图像和JavaScript。

回答

3

的optimizat离子实际上取决于所使用的JSF实现,但是,Mojarra和MyFaces都高度优化了资源处理的性能。已考虑到服务器端和客户端缓存的每一种可能性。访问最多的资源缓存在服务器的内存中,I/O传输通过通道,适当的ETagLast-Modified响应头已被设置,等等。对于Mojarra来说,检查它是如何处理的一个很好的起点是com.sun.faces.application.resource.ResourceHandlerImpl#handleResourceRequest()方法。

+0

哦,我看到了,非常感谢,所以实际上,纯文本与使用jsf组件之间的性能差别绝对没有,因为此缓存?这非常有趣,我实际上认为使用jsf组件输出资源会带来性能损失等等 – arg20 2012-02-09 13:43:01

1

它不是<h:stylesheet><h:outputStylesheet>

JSF组件是在当你看到你的页面的源代码,你不会找到任何JSF组件的所有JSF组件会自动转换为根据渲染,因此时间转换为纯HTML 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/