簡體   English   中英

JSF是否在兩個請求之間緩存每個組件的狀態?

[英]Does JSF cache the state of each component in between the two requests?

在JSF中,每個組件的狀態存儲在請求之間 ”-這意味着數據在應用程序服務器上被緩存(!?),因此服務器現在將具有更大的內存需求(!?)。

但是我想我們也可以使狀態為requestScoped ,所以這不會在兩個請求期間將數據緩存在應用程序服務器上,對嗎? 我得到正確嗎?

[我的應用程序包含用戶的博客帖子,這些博客帖子是較大的文本Blob,因此緩存起來非常昂貴。 但是,是的,有些數據需要緩存! ]

您在此處提到的句子是關於JSF狀態保存的,它保存了組件樹的狀態。 默認情況下,這是在服務器上完成的...但是您也可以在客戶端上執行此操作,以節省一些內存。 請參見: http : //wiki.glassfish.java.net/Wiki.jsp?page=JavaServerFacesRI#section-JavaServerFacesRI-WhatAreTheDifferencesBetweenServerAndClientSideStateSavingAndWhatAreTheBenefitsBenefitsDrawbacksOfEach

支持bean的范圍是另外一回事。 您可以使后台bean的會話/請求/視圖具有作用域(甚至使用另一個或自定義作用域)。 這將對服務器內存使用量產生影響。 但是,如果您正確地執行了操作,並且沒有大數據需求,則可以進行管理。 例如,您可以存儲盡可能少的數據並定期重新加載數據(從db,...)。

所有這一切並不意味着您的數據已緩存(至少不是來自持久性存儲的數據)。 這取決於你。

因此,內存需求是需要注意的事情。 完善的Java EE服務器的基本設置通常比apache服務器上的php應用程序要多。但是,如果正確完成操作,使其變得更快/更好/更具可擴展性(cpu / mem)可能更容易實現。

去年,我不得不創建兩個JSF應用程序。 如果我沒記錯的話,可以將數據緩存在Backing Bean中,這樣您就不必每次刷新都可以訪問數據庫來檢索博客內容。

JSF幾乎具有非常強大的服務器-客戶端功能。 很難想象JSF只能像GWT這樣的客戶端上運行。

您在使用IceFaces還是任何其他JSF實現(例如RichFaces)?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM