2012-05-09 24 views
1

JSF 2.0では、非AJAXの送信と、と "@all" AJAX提出?JSF非AJAX提出と「@all」AJAX提出の間に大きな技術的違いがありますか?

ユーザーは、AJAX形式の送信からページをリフレッシュすることは認識しませんが、技術的に重要なことは何ですか?より少ないデータがサーバーに送信されますか? JSFライフサイクルの要素がAJAXとAJAX以外のものと異なるのですか?

答えて

1

技術的には、@allは同期ポストバックよりも遅いです。レンダリング応答中のHTMLレンダリングには違いはありませんが、ajaxレスポンスは更新されたHTMLをCDATAブロックとしてXML文書として送信されているため、ajaxレスポンスには若干のデータがあります。

<?xml version='1.0' encoding='UTF-8'?> 
<partial-response> 
    <changes> 
     <update id="javax.faces.ViewRoot"> 
      <![CDATA[ 
       HTML output here. 
      ]]> 
     </update> 
     <update id="javax.faces.ViewState"> 
      <![CDATA[5778819104895950876:-4716773626508512118]]> 
     </update> 
    </changes> 
</partial-response> 

(あなたはクローム/ Firebugの/ IE9でのWeb開発者向けツールセットの「ネット」または「ネットワーク」のセクションでそれを自分で見ることができます。以下のデータは全体のHTML出力の上の応答に追加されますF12を押すことで得ることができます)

これは、同期応答よりも常に〜250バイト多くあります。また、後処理では、XMLレスポンスからHTMLをすべて解析してDOMを置き換える必要があるため、後処理ではオーバーヘッドがありますが、高速なマシンではパフォーマンスの影響はほとんど無視できます。

@allの手段がないため、同期ポストバックより視覚的に高速です。と表示されます。それは「根本的に間違っている」であるため、@allは(PrimeFacesを導く引用する)PrimeFacesで長いため、サポートされていないだったが、OmniFaces FullAjaxExceptionHandler後、PrimeFacesは心を変えた鉛、それはPrimeFaces 3.2と上からサポートされています。ということ

注意

+0

私は非常に有益な知識を求めました。ありがとう、いつものように、BalusC。 – BestPractices

+0

ようこそ。 – BalusC

関連する問題