Çarşamba, Ağustos 05, 2009

jsf richfaces performance tuning

Jsf ve richfaces ile uygulama geliştirdiyseniz yavaşlık ile ilgili şikayetiniz olabilir. Bu teknolojiler dikkatli kullanılmadığında yavaşlık yaşayabilirsiniz. Aşağıda performans için yapılması gereken bir kaç şey eklenmiş.

Richfaces Filter
<filter>
<display-name>RichFacesFilter</display-name>
<filter-name>richfaces</filter-name>
<filter-class>org.ajax4jsf.Filter</filter-class>
<init-param>
<param-name>forceparser</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>enable-cache</param-name>
<param-value>true</param-value>
</init-param>
</filter>

enable-cache parametresi ile richfaces komponentlerini client tarafında cachelenmesini sağlar. bu sayede gözle görülür bir performans sağlanabilir. forceparser parametres ile de richfaces a sadece ajax geri dönüşleri düzenlemesini söylüyoruz. eğer bu parametreyi bu şekilde set etmezsek html dahil bütün geri dönüşleri düzenlemeye kalkar.

<context-param>
<param-name>org.ajax4jsf.COMPRESS_SCRIPT</param-name>
<param-value>true</param-value>
</context-param>

compress_script parametresi ile konteynır'a bütün richfaces kaynaklarını sıkıştırmasını söylüyoruz.

<!-- load all richfaces javascript onetime -->
<context-param>
<param-name>org.richfaces.LoadScriptStrategy</param-name>
<param-value>ALL</param-value>
</context-param>
<context-param>
<param-name>org.ajax4jsf.COMPRESS_SCRIPT</param-name>
<param-value>true</param-value>
</context-param>
<!-- load all richfaces css onetime -->
<context-param>
<param-name>org.richfaces.LoadStyleStrategy</param-name>
<param-value>ALL</param-value>
</context-param>


org.richfaces.LoadScriptStrategy parametresini ALL yapmakla bütün scriptleri ilk başta yüklemesini sağayabiliriz. böylelikle daha ilkin yavaşa yüklense de sonrasında uygulama hızlı bir şekilde çalışarak network trafğini azaltacaktır. aynı şekilde org.richfaces.LoadStyleStrategy parametresini ALL yaparak css lerinde ilk başta yüklemesini sağlayabiliriz.


Bunların dışında ajax kullanırken aşağıdaki durumlara dikkat etmekte fayda var;

-> herhangi bir partial rendering yaparken mutlaka ajaxSingle=true yu kullanmaya özen göstermek,

-> validasyonun gerekli olmadığı rendering durumlarında immediate=true yaparak hızlı bir şekilde cevap dönmesini sağlamak.

-> ajax response sonucunda sadece reRender="" litesini set edeceksek limitToList=true seçeneğini set ederek sadece ilgili alanların set edilmesini sağlamak.

-> ajax regionları kullanarak sadece ilgili region ın update edilmesini sağlamak. ajax region kullanırken renderRegionOnly yi true yaparsak sadece ilgili region update edilir.

-> jsf tagları ile halledilebilen bir işi richfaces tagı ile kullanmamak. örenğin h:datatable ile halledilebilecek bir iş için rich:datatable kullanmamak gerekiyor.

-> business logic kısmını getter lara koymamak.

3 yorum:

  1. Böyle birşey de var: org.ajax4jsf.COMPRESS_STYLE

    YanıtlaSil
  2. Evet onu kaçırmışız.
    Katkı için teşekkürler...

    YanıtlaSil
  3. Mustfacığım richfaces yeni kullanıyorum söylediklerinin hiç birini yapmamışım:)
    sezo

    YanıtlaSil