2012-05-09 32 views

回答

1

從技術上講,@all比同步回發慢。在呈現響應期間,HTML呈現沒有區別,但ajax響應中的數據稍多一些,因爲ajax響應已作爲XML文檔發送,並將更新的HTML作爲CDATA塊發送。以下數據添加到響應的整個HTML輸出的頂端:

<?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> 

(你可以自己看到它在Chrome /螢火蟲/ IE9 Web開發工具集的「網絡」或「網絡」部分你可以通過按F12得到)

因此總是比同步響應多250字節。而且,後處理有一些開銷,因爲JavaScript必須從XML響應中解析出所有HTML,並用它來替換DOM,儘管現在快速機器對性能的影響幾乎完全可以忽略不計。

然而,在實踐中,@all出現視覺上的速度比同步回發,因爲沒有任何"flash of content"的手段。

注意@all是不支持在PrimeFaces長,因爲它是「根本錯誤」(舉了PrimeFaces導致),但OmniFaces FullAjaxExceptionHandler之後,PrimeFaces領先優勢已經改變了主意,它是從PrimeFaces 3.2和支持。

+0

很高興我問 - 非常有用的知識。謝謝,一如既往,BalusC。 – BestPractices

+0

不客氣。 – BalusC