جانغو-cachebot هو التطبيق جانغو الذي يوفر التخزين المؤقت الآلي وإبطال.
تركيب
على & nbsp؛ 1. easy_install جانغو-cachebot أو PIP تثبيت جانغو-cachebot
على & nbsp؛ 2.
على & nbsp؛ أضف إلى cachebot INSTALLED_APPS بك
على & nbsp؛ 3.
على & nbsp؛ تعيين الخلفية ذاكرة التخزين المؤقت إلى واحدة من الخلفيات في cachebots.backends، على سبيل المثال:
على & nbsp؛ CACHE_BACKEND = 'cachebot.backends.memcached: //127.0.0.1: 11211 / مهلة = 0'
الخلفيات المدعومة حاليا هي:
cachebot.backends.dummy
cachebot.backends.memcached
cachebot.backends.pylibmcd
Cachebot قرد بقع الافتراضي مدير جانغو وqueryset لجعل CacheBotManager وCachedQuerySet الافتراضات المستخدمة من قبل مشروع جانغو الخاص بك.
استعمال
لنفترض كان لديك استفسار، التي بدت مثل هذا وأردت تخزين ما يلي:
Photo.objects.filter (المستخدم = المستخدم، الحالة = 2)
فقط إضافة .cache () إلى سلسلة queryset مثل ذلك:
Photo.objects.cache (). تصفية (المستخدم = المستخدم، الحالة = 2)
وهذا الاستعلام الحصول على تبطل إذا تم استيفاء أي من الشروط التالية:
يتم تبديل 1. واحد من الكائنات التي تم إرجاعها بواسطة الاستعلام.
2. يتم تبديل المستخدم.
تم تعديل 3. صور ويتمتع بوضع = 2.
تم تعديل 4. صور ولديه المستخدم = المستخدم.
هذه المعايير إبطال هو على الارجح حذرة للغاية، لأننا لا نريد أن يبطل هذا المخبأ في كل مرة يتم حفظ الصورة مع الحالة = 2. لضبط معايير الإبطال، يمكننا تحديد لإبطال فقط على مجالات معينة. على سبيل المثال:
Photo.objects.cache ('المستخدم). تصفية (المستخدم = المستخدم، الحالة = 2)
وهذا الاستعلام الحصول على تبطل إذا تم استيفاء أي من الشروط التالية:
يتم تبديل 1. واحد من الكائنات التي تم إرجاعها بواسطة الاستعلام.
2. يتم تبديل المستخدم.
تم تعديل 3. صور ولديه المستخدم = المستخدم.
ويمكن أيضا جانغو-cachebot التعامل مع select_related، العلاقات إلى الأمام، وعكس العلاقات، أي:
Photo.objects.select_related (). مخبأ ('المستخدم). تصفية (user__username = "ديفيد"، الحالة = 2)
Photo.objects.cache ('المستخدم). تصفية (user__username = "ديفيد"، الحالة = 2)
Photo.objects.cache ('message__sender'). تصفية (message__sender = المستخدم، الحالة = 2)
الإعدادات
CACHEBOT_CACHE_GET الافتراضي: خطأ
إذا CACHEBOT_CACHE_GET = صحيح، سيتم تلقائيا مؤقتا على جميع الاستفسارات objects.get. وهذا يمكن أن يتم تجاوز على مستوى مدير مثل ذلك:
فئة صور (models.Model):
على & nbsp؛ ...
على & nbsp؛ كائنات = models.Manager (cache_get = صحيح)
CACHEBOT_CACHE_ALL الافتراضي: خطأ
إذا CACHEBOT_CACHE_ALL = صحيح، سيتم تلقائيا مؤقتا على جميع الاستفسارات. وهذا يمكن أن يتم تجاوز على مستوى مدير مثل ذلك:
فئة صور (models.Model):
على & nbsp؛ ...
على & nbsp؛ كائنات = models.Manager (cache_all = صحيح)
CACHE_PREFIX الافتراضي: ''
افترض أن لديك التنمية وتقاسم نفس الخادم أعطها خادم الإنتاج. عادة هذا هو فكرة سيئة لأن كل خادم يمكن الكتابة فوق مفاتيح مخبأ الخادم الآخر. إذا قمت بإضافة CACHE_PREFIX إلى الإعدادات الخاصة بك، فإن جميع مفاتيح مخبأ لها أن بادئة إلحاق لهم حتى تتمكن من تجنب هذه المشكلة.
المحاذير (مهم!)
على & nbsp؛ 1. جانغو-cachebot يتطلب جانغو 1.2 أو أكبر
على & nbsp؛ 2. واضاف / ان ازالة الكائنات مع ManyRelatedManager لا يبطل تلقائيا. وذلك لأن إشارات لهذه الأنواع من العمليات ليست في جانغو حتى 1.2. حتى ذلك الحين، سوف تحتاج إلى إبطال هذه الاستعلامات يدويا مثل ذلك:
& nbsp؛ من cachebot.signals استيراد invalidate_object
على & nbsp؛ user.friends.add (صديق)
على & nbsp؛ invalidate_object (المستخدم)
على & nbsp؛ invalidate_object (صديق)
على & nbsp؛ 3. لن تحصل على الاعتماد مؤقتا () استفسار.
على & nbsp؛ 4. إذا كنت يبطل على الحقل الذي هو في نطاق أو استبعاد الاستعلام، وسوف تحصل على إبطال هذه الاستعلامات عند أي شيء في التغييرات الجدول. على سبيل المثال ما يلي سوف تحصل يبطل عندما يتغير أي شيء على الطاولة العضو:
على & nbsp؛. Photo.objects.cache ('المستخدم') تصفية (user__in = المستخدمين، الحالة = 2)
على & nbsp؛. Photo.objects.cache ('المستخدم') استبعاد (المستخدم = المستخدم، الحالة = 2)
على & nbsp؛ 5. ربما يجب عليك استخدام أداة مثل-جانغو memcache الوضع للاطمئنان على حالة من ذاكرة التخزين المؤقت. إذا memcache overfills ويبدأ إسقاط مفاتيح، فمن الممكن أن استفساراتك قد لا تحصل على إبطال.
على & nbsp؛ 6. .values_list () لا مخبأ حتى الان. يتعين عليك أن تفعل شيئا من هذا القبيل بدلا من ذلك:
على & nbsp؛ [. صور ['الهوية'] للصور في Photo.objects.cache ('المستخدم') تصفية (المستخدم = المستخدم) .values ('الهوية')]
على & nbsp؛ 7. فمن الممكن أن هناك حالات حافة لقد غاب. جانغو-cachebot لا يزال في انها مرحلة الطفولة، لذلك يجب أن لا يزال الاختيار المزدوج الذي استفساراتك يزدادون مؤقتا وإبطالها. واسمحوا لي أن أعرف إذا لاحظت أي تناقضات غريبة
المتطلبات:.
بيثون
جانغو
لم يتم العثور على التعليقات