2012-05-08 12 views
8

हम ग्राहक राज्य की बचत पर कर दिया और ViewScoped समर्थन सेम का उपयोग करें। जब ग्राहक राज्य की बचत चालू है और हम एक ViewScoped सेम का उपयोग कर रहे हैं, तो उस पृष्ठ के धारावाहिक है (ताकि पेज को याद कर सकते हैं एक टोकन/कुंजी के साथ सत्र में संग्रहीत ViewScoped सेम पृष्ठ पर serialzied है या यह कहना है सत्र से बीन यदि पृष्ठ स्वयं को पोस्ट किया गया है)ViewScoped रहे हैं सेम पृष्ठ पर धारावाहिक?

यहां एक चिंता हो सकती है, अगर इसे क्रमबद्ध किया गया है, तो हो सकता है कि हम दृश्यस्कोप्ड बीन पर बड़े आवृत्ति चर को संग्रहीत न करने के बारे में चिंता करना चाहें क्योंकि यह क्रमबद्ध है पृष्ठ पर और तार पर पीछे/पीछे चला जाता है।

उत्तर

9

ग्राहक राज्य की बचत चालू है और हम एक ViewScoped सेम का उपयोग कर रहे हैं, ViewScoped सेम पृष्ठ पर serialzied या यह कहना है, उस पृष्ठ पर धारावाहिक है एक टोकन/कुंजी के साथ सत्र में संग्रहीत है?

Mojarra 2.x स्टोर HTTP सत्र में स्कॉप्ड बीन्स देखें। एक अनियंत्रित सेटिंग है जिसमें सत्र में डिफ़ॉल्ट 25 दृश्य स्कैन किए गए सेम हैं। issue 4015 भी देखें। दूसरे शब्दों में, भौतिक दृश्य स्कैन किए गए बीन उदाहरण जेएसएफ दृश्य स्थिति में कभी भी संग्रहीत नहीं होते हैं। उन्हें केवल यूयूआईडी द्वारा संदर्भित किया जाता है जो बदले में जेएसएफ व्यू स्टेटस में संग्रहीत होता है। इसलिए, क्लाइंट/सर्वर राज्य बचत विधि के बावजूद, वे जेएसएफ दृश्य स्थिति में क्रमबद्ध नहीं हैं।


यहाँ एक चिंता का विषय हो सकता है कि, अगर यह धारावाहिक है, तो हम तो चिंता करने की के बारे में ViewScoped सेम पर बड़े उदाहरण चर भंडारण नहीं के रूप में यह पृष्ठ पर धारावाहिक है और वापस चला जाता है चाहते हो सकता है/तार पर आगे।

यह एक वैध चिंता है। यहां तक ​​कि यह भी सच था, हम हालांकि चरम मामलों के बारे में बात कर रहे हैं। प्रत्येक 10 औसत गुणों के साथ 100 औसत संस्थाओं का एक संग्रह पहले से ही कोई एक अतिरिक्त ~ दृश्य राज्य आकार पर 5KB से अधिक होना चाहिए। ध्यान दें कि आप एक बहुत बैंडविड्थ वापस वेबसर्वर पर gzip संपीड़न सक्षम करने से, यहां तक ​​कि प्रति पाठ आधारित संसाधन 70% तक प्राप्त कर सकते हैं।

लेकिन आप बड़े डेटा के साथ काम कर रहे हैं, तो HTTP सत्र भंडारण आकार बदले में एक चिंता का विषय हो सकता है। यह भी देखें JSF 2.2 Memory Consumption: Why does Mojarra keep the ViewScoped Beans of the last 25 Views in Memory? आदर्श रूप से, दृश्य स्कॉप्ड बीन को जल्द ही नष्ट किया जाना चाहिए जैसे ही संदर्भित पृष्ठ को जीईटी नेविगेशन या ब्राउज़र टैब बंद करके अनलोड किया जाता है। डिफॉल्ट जेएसएफ व्यू स्कॉप्ड बीन ऐसा नहीं करता है। यह केवल एक अलग दृश्य के लिए पोस्टबैक के दौरान नष्ट हो जाता है, या जब सत्र समाप्त हो जाता है।

यदि आप जेएसएफ उपयोगिता लाइब्रेरी OmniFaces का उपयोग करते हैं, तो संस्करण 2.2 @org.omnifaces.cdi.ViewScoped एक अनलोड के दौरान नष्ट होने का समर्थन करता है। इसका HTTP सत्र भंडारण आकार पर सकारात्मक प्रभाव होना चाहिए।

+0

धन्यवाद - यह जानना बहुत अच्छी जानकारी है। – BestPractices

+0

आपका स्वागत है। – BalusC

+0

इस महान उत्तर में जोड़ना: आप अतिरिक्त रूप से क्लाइंट रेंडर व्यूस्टेट को एन्क्रिप्ट कर सकते हैं। मुझे लगता है कि यह जेएसएफ 2.2 –

3

कृपया ध्यान दें कि जेएलएफ के हाल के संस्करणों के लिए बलुस द्वारा उत्तर सत्य नहीं है: हाल के संस्करणों के लिए javax.faces.view.ViewScoped बीन्स सर्वर पर रखा गया है। JAVASERVERFACES-3090

+0

सिर के लिए धन्यवाद, मैंने जवाब अपडेट किया। – BalusC

संबंधित मुद्दे