JSF 2.0では、非AJAXの送信と、と "@all" AJAX提出?JSF非AJAX提出と「@all」AJAX提出の間に大きな技術的違いがありますか?
ユーザーは、AJAX形式の送信からページをリフレッシュすることは認識しませんが、技術的に重要なことは何ですか?より少ないデータがサーバーに送信されますか? JSFライフサイクルの要素がAJAXとAJAX以外のものと異なるのですか?
JSF 2.0では、非AJAXの送信と、と "@all" AJAX提出?JSF非AJAX提出と「@all」AJAX提出の間に大きな技術的違いがありますか?
ユーザーは、AJAX形式の送信からページをリフレッシュすることは認識しませんが、技術的に重要なことは何ですか?より少ないデータがサーバーに送信されますか? JSFライフサイクルの要素がAJAXとAJAX以外のものと異なるのですか?
技術的には、@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と上からサポートされています。ということ
注意
私は非常に有益な知識を求めました。ありがとう、いつものように、BalusC。 – BestPractices
ようこそ。 – BalusC