JSF Richfacesアプリケーションの最適化


JSF Richfacesアプリケーションの最適化
2009-06-18作者:
zhangtaolv.
Richfacesを用いてJSFベースのRIAアプリケーションを開発することは,非常に汎用的で自然で安定した選択である.実際、RichfacesはAjaxを実装するために非常に自然な技術であり、JSFを使用してリッチなユーザーインタラクションを作成することが容易になる.ここでは、JSF Richfacesアプリケーションを最適化するための一般的なベストプラクティスを共有します.
XML/HTMLコード
   1. <context-param>  
   2.         <param-name>org.ajax4jsf.COMPRESS_SCRIPT</param-name>  
   3.         <param-value>true</param-value>  
   4. </context-param>  

この構成では、画像、スタイルシート、JavaScriptなど、クライアントに送信する前にコンテナがすべてのRichfacesリソースを圧縮するように強制されます.ページのロード時間を大幅に短縮します.
XML/HTMLコード
 1.<filter>  
 2.   <filter-name>richfaces</filter-name>  
 3.    <display-name>RichFaces Filter</display-name>  
 4.    <filter-class>org.ajax4jsf.Filter</filter-class>  
 5.    <init-param>    
 6.        <param-name>forceparser</param-name>  
 7.       <param-value>false</param-value>  
 8.    </init-param>  
 9.</filter> 

これはforceparserをfalseに設定することで最小化できます.AJAX応答のみの場合はきれいになります.他の場合、すべてのJSF応答はきれいです.この場合、filterはFacesServiceにマッピングされるため、一部のページ表示に使用できます.
XML/HTMLコード
   1. <context-param>  
   2.     <param-name>org.richfaces.LoadStyleStrategy</param-name>  
   3.     <param-value>all</param-value>  
   4. </context-param>  

この構成では、Richfacesアプリケーションに最初にアクセスしたリクエストが到着したときに、スタイルに関連するすべてのファイルがクライアントにロードされることを保証します.
XML/HTMLコード
1. <context-param>  
2.     <param-name>org.richfaces.LoadScriptStrategy</param-name>  
3.     <param-value>all</param-value>  
4. </context-param

JSFの最適化テクニックは、Richfacesに関連するすべてのJavaScript、ファイル、ライブラリなどが、最初のリクエストが到着したときにクライアントにダウンロードされることを保証します.
XML/HTMLコード
1. <filter>  
2.     <display-name>RichFaces Filter</display-name>  
3.     <filter-name>richfaces</filter-name>  
4.     <filter-class>org.ajax4jsf.Filter</filter-class>  
5.     <init-param>    
6.         <param-name>enable-cache</param-name>  
7.         <param-value>true</param-value>    
8.     </init-param>  
9. </filter> 

JSF Richfacesの最適化では、Richfacesコンポーネントのキャッシュが有効になり、コンポーネントがクライアントにキャッシュされてアプリケーションのパフォーマンスが向上します.
Richfacesにはいくつかの解析器が内蔵されています.デフォルトはTidyですが、非常に遅いです.Neko解析器は最も速く、以下の構成で有効にできます.
XML/HTMLコード
   1. <context-param>  
   2.         <param-name>org.ajax4jsf.xmlparser.ORDER</param-name>  
   3.         <param-value>NEKO</param-value>  
   4.     </context-param>  
   5.     <context-param>  
   6.         <param-name>org.ajax4jsf.xmlparser.NEKO</param-name>  
   7.         <param-value>.*\..*</param-value>  
   8.     </context-param>  

ここでは、NEKOフィルタのみを適用し、すべてのURLに適用するようにしています.
Ajaxに関するいくつかのテクニック
ajaxSingle=true Ajaxコンポーネントのいずれかの値がサーバ側でのみ使用されている場合、ajaxSingleはAjaxリクエストMap全体をサーバにコミットしないようにtrueに設定する必要があります.
limitToList = ture this attribute should be true for any ajax compoenent who will reRender only the components specified in its reRender attribute list. All other components not specified in the reRender list will no longer reRender upon request complition.
immediate = true This trick should be used by setting extra effort. This property will submit the value and skips validation phase and set the value immediatly into backing bean.