2012-02-09 49 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/