【问题标题】:JSF: are resource components optimized?JSF:资源组件优化了吗?
【发布时间】:2012-03-01 21:22:23
【问题描述】:

我知道这没什么区别,但在 JSF 2 中我可以通过以下两种方式之一输出资源(例如 css):

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

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

现在,如果我正在编写主模板站点,一些不会更改(已修复)的内容,我是否最好使用纯文本并提供资源的绝对路径?在使用它和 jsf 组件之间,性能是否有任何变化,即使是微不足道的?

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

所有类型的资源、图像和 javascript 也是如此。

【问题讨论】:

    标签: java jsf resources


    【解决方案1】:

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

    【讨论】:

    • 哦,我明白了,非常感谢,所以实际上纯文本和使用 jsf 组件之间完全没有性能差异,因为这种缓存?这个很有意思,其实我还以为用jsf组件输出资源会有性能损失什么的
    【解决方案2】:

    不是<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/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-13
      • 1970-01-01
      • 1970-01-01
      • 2013-04-15
      • 2018-08-17
      • 2018-11-20
      • 1970-01-01
      • 2011-09-02
      相关资源
      最近更新 更多