मैं कहूंगा कि सर्वर को कहीं भी सर्वर पर स्टोर करें और इसे उपयोगकर्ता के सत्र में सहसंबंधित करें। जबकि एक कुकी चीजों को स्टोर करने के लिए स्पष्ट रूप से एक समान स्थान हो सकती है, यदि आप सुरक्षा और डेटा आकार पर विचार करते हैं, तो सर्वर पर जितना संभव हो उतना डेटा रखना एक अच्छी बात बन जाती है।
उदाहरण के लिए, सार्वजनिक टर्मिनल सेटिंग में, किसी के लिए कुकी की सामग्री को देखने और सूची देखने के लिए ठीक होगा? यदि हां, तो कुकी ठीक है; यदि नहीं, तो आप केवल एक आईडी चाहते हैं जो उपयोगकर्ता को डेटा से लिंक करे। ऐसा करने से आपको यह सुनिश्चित करने की अनुमति मिल जाएगी कि उपयोगकर्ता को मशीन पर सब कुछ संग्रहीत करने के बजाय उस डेटा को प्राप्त करने के लिए साइट पर प्रमाणीकृत किया गया है - उन्हें कुछ क्रेडेंशियल्स साथ ही सत्र की आवश्यकता होगी पहचानकर्ता।
एक आकार परिप्रेक्ष्य से, निश्चित रूप से, आप 4K कुकी या किसी ब्राउज़र/ब्रॉडबैंड उपयोगकर्ता के लिए कुछ चिंतित नहीं होंगे, लेकिन यदि आपके लक्ष्य में से कोई एक मोबाइल फोन या ब्लैकबेरी (3 जी पर नहीं) को कनेक्ट करने की अनुमति देना है और एक स्नैपी अनुभव है (और डेटा के लिए बिल नहीं मिलता है), ग्राहक को पारित डेटा की मात्रा को कम करना महत्वपूर्ण होगा।
सर्वर स्टोरेज आपको कुछ अन्य उत्तरों में उल्लिखित कुछ लचीलापन भी देता है - उपयोगकर्ता अपने कार्ट को एक मशीन पर सहेज सकता है और दूसरे के साथ काम करना शुरू कर सकता है; आप कार्ट को कुछ प्रकार के क्रेडेंशियल्स (एक क्षणिक सत्र के बजाए) से जोड़ सकते हैं और उपयोगकर्ता ने अपनी कुकीज़ साफ़ करने के बाद कार्ट को बरकरार रखा है; आपको गलती सहनशीलता के रास्ते में थोड़ा और मिलता है - यदि उपयोगकर्ता का ब्राउज़र दुर्घटनाग्रस्त हो जाता है, तो साइट पर अभी भी डेटा सुरक्षित और ध्वनि है।
अगर गलती सहनशीलता महत्वपूर्ण है, तो आपको किसी डेटाबेस की तरह लगातार स्टोर की आवश्यकता होगी। यदि नहीं, तो एप्लिकेशन मेमोरी में शायद ठीक है, लेकिन यदि ऐप पुनरारंभ होता है तो आप डेटा खो देंगे। यदि आप एक खेत के माहौल में हैं, तो स्टोर को केंद्रीय रूप से सुलभ होना चाहिए, इसलिए आप फिर से डेटाबेस देख रहे हैं।
चाहे आप क्षणिक सत्र या क्रेडेंशियल्स द्वारा कुंजी चुनना चाहते हैं, इस पर निर्भर करेगा कि क्या उपयोगकर्ता अपना डेटा सहेज सकते हैं और इसे प्राप्त करने के लिए बाद में वापस आ सकते हैं। क्षणिक सत्र अंततः "त्याग दिया" के रूप में साफ हो जाएगा, और शायद यह ठीक है। उपयोगकर्ता प्रोफ़ाइल से ट्राइंग करने से उपयोगकर्ता अपना डेटा रखेगा और स्पष्ट रूप से इसे छोड़ देगा। किसी भी तरह से, मैं गलती सहनशीलता और केंद्रीय पहुंच के लिए डेटाबेस जैसे किसी प्रकार की बैकिंग स्टोर का उपयोग करता हूं। (या शायद मैं समाधान को अतिरंजित कर रहा हूं?)