2009-03-03 12 views
7

मेरे django प्रोजेक्ट पर कई विचारों को कैश करने के बाद - @ cache_page (60 * 5) - मैंने देखा है कि memcached पूरे दृश्य को कैश करता है, यहां तक ​​कि अनुरोध तर्क भी! तो यदि उपयोगकर्ता द्वारा आने वाले पहले उपयोगकर्ता को userxyz के रूप में लॉग इन किया गया है, तो अन्य सभी अज्ञात या पंजीकृत उपयोगकर्ता जो एक ही पृष्ठ से पूछेंगे, उस पृष्ठ के साथ प्रस्तुत किए जाएंगे जो उपयोगकर्ता userxyz द्वारा कैश किया गया था! जाहिर है यह वांछित व्यवहार नहीं है ... तो क्या मैं दृश्य पर सबकुछ कैश कर सकता हूं, लेकिन अनुरोध तर्क नहीं? या memcached केवल अज्ञात सत्रों के लिए उपयुक्त है?memcached कैश अनुरोध?

अग्रिम धन्यवाद, Markos Gogoulos

उत्तर

6

आप एक पृष्ठ पर गतिशील और स्थिर डेटा मिश्रण कर रहे हैं अपने मामले गतिशील डेटा उपयोगकर्ता के उपयोगकर्ता नाम में लॉग ऑन है, तो पृष्ठ कैशिंग सही विकल्प नहीं है । अगर आप memcached के बजाय फ़ाइल आधारित कैश स्टोरेज का उपयोग कर रहे थे तो यह नहीं बदलेगा।

मैं खंड कैशिंग की कोशिश करने का सुझाव देता हूं। आप कुछ इस तरह कर सकते हैं:

{% load cache %} 
{% cache 500 sidebar %} 
    .. sidebar .. 
{% endcache %} 

यह पहचानकर्ता साइडबार के साथ 500 सेकंड के लिए कैश टैग की सामग्री को कैश होगा।

आप यहाँ कैशिंग बारे में अधिक जानकारी पा सकते हैं:

http://docs.djangoproject.com/en/dev/topics/cache/


यदि यह एक पेज है कि बहुत बार, उदाहरण के लिए एक स्वागत योग्य पेज हिट होने जा रहा है, कि आप लाभ होगा खंड कैशिंग पर पेज कैशिंग का उपयोग करने से (उदाहरण के लिए केवल गतिशील डेटा उपयोगकर्ता नाम है), फिर कुछ अन्य विकल्प हैं।

उदाहरण के लिए कहें कि आप शीर्ष पर लॉगिन/लॉगआउट अनुभाग को छोड़कर एक पूरी तरह से स्थिर पृष्ठ चाहते हैं जो कि उपयोगकर्ता लॉग इन है या नहीं, इस पर निर्भर करता है कि आप प्रमाणीकरण कुकी के अस्तित्व की जांच कर सकते हैं जब पृष्ठ को पहली बार लोड किया जाता है और सशर्त रूप से जावास्क्रिप्ट का उपयोग करके अलग-अलग डेटा प्रदर्शित करता है।

2

मेमकैच सिर्फ एक बैकएंड है। यह कैश करने के लिए जो कुछ भी आपको बताता है उसे कैश करता है। तो वास्तव में आपका प्रश्न है "क्या Django का पूर्ण-पृष्ठ कैशिंग गतिशील पृष्ठों के लिए उपयुक्त है?" शायद आप कैश पूर्ण-पृष्ठ नहीं चाहते हैं, बस इसका हिस्सा है। या केवल पृष्ठों गुमनाम अनुरोधों के लिए (CACHE_MIDDLEWARE_ANONYMOUS_ONLY का प्रयोग करके)

पुस्तक http://www.djangobook.com/en/1.0/chapter13/

0

आप template fragments में देखना चाहते हो सकता है का संदर्भ लें और सामग्री के उन बिट्स कि उपयोगकर्ता विशिष्ट नहीं कर रहे भंडारित करता है।

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