我知道这没有多大区别,但在JSF2中,我可以通过以下两种方式之一输出资源(例如css):
a)使用标准html <link>组件和到该组件的绝对路径。这将被视为文本,因此不会内置到组件中。
b)使用jsf <h:stylesheet>并设置其名称和库。
现在,如果我正在编写主模板站点,一些不会改变的东西(修复),我是不是最好使用纯文本并给出资源的绝对路径?在使用该组件和使用jsf组件之间,性能是否有任何变化,即使是微不足道的?
JSF是否优化了对此的访问,以便不必在每次呈现页面时都定位资源?
这同样适用于所有类型的资源,图像和javascript。
发布于 2012-02-09 19:59:55
优化实际上依赖于所使用的JSF实现,但是Mojarra和MyFaces都高度优化了资源处理的性能。服务器端和客户端缓存的每一种可能性都被考虑在内。最常访问的资源被缓存在服务器的内存中,I/O传输通过通道,正确的ETag和Last-Modified响应头被设置,等等。对于Mojarra,com.sun.faces.application.resource.ResourceHandlerImpl#handleResourceRequest()方法是一个很好的起点来检查所有这些资源是如何处理的。
发布于 2012-02-09 19:52:08
它不是<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/
https://stackoverflow.com/questions/9210301
复制相似问题