تعزيز أداء Django: استخدام Memcached منفصل للجلسات

تعلم كيفية تحسين أداء Django بشكل كبير من خلال تنفيذ نسخة Memcached منفصلة لإدارة الجلسات، مما يمنع تسجيل خروج المستخدمين أثناء تحديثات ذاكرة التخزين المؤقت.

كمطوري Django، غالبًا ما نواجه اختناقات في الأداء، خاصة عند التعامل مع إدارة الجلسات. يمكن أن تبطئ الجلسات المدعومة بقواعد البيانات تطبيقك بشكل كبير. بينما يقدم Memcached حلاً، إلا أنه يأتي مع تحدٍ خاص به: فقدان بيانات الجلسة أثناء إعادة تشغيل الخادم أو تحديثات ذاكرة التخزين المؤقت. في هذا المنشور، سأريك كيفية التغلب على هذه المشكلة باستخدام نسختين منفصلتين من Memcached - واحدة لكائنات Python العادية وأخرى مخصصة لبيانات الجلسة.

المشكلة مع نسخة Memcached الواحدة

عند استخدام نسخة Memcached واحدة لكل من التخزين المؤقت العام والجلسات، فإن إعادة تشغيل الخادم أو مسح ذاكرة التخزين المؤقت يؤدي إلى تسجيل خروج جميع المستخدمين. هذا يخلق تجربة مستخدم سيئة ويمكن أن يكون مشكلة خاصة للمواقع ذات حركة المرور العالية.

الحل: إعداد Memcached المزدوج

من خلال تنفيذ نسخة Memcached منفصلة للجلسات، يمكننا الحفاظ على جلسات المستخدمين حتى عند مسح ذاكرة التخزين المؤقت الرئيسية. إليك كيفية إعداده:

  1. قم بإنشاء ملفين جديدين في دليل مشروعك:

الملف الأول: session_backend.py

هذا الملف هو نسخة معدلة من contrib/sessions/backends/cache.py الخاص بـ Django:

1
2
3
4
5
from django.contrib.sessions.backends.base import SessionBase, CreateError
from yourproject.session_cache import cache

class SessionStore(SessionBase):
    # ... [باقي الكود يبقى كما هو في المنشور الأصلي]

الملف الثاني: session_cache.py

هذا الملف يقوم بتهيئة ذاكرة التخزين المؤقت المنفصلة للجلسات:

1
2
3
4
5
6
from django.core.cache.backends.memcached import CacheClass
from django.conf import settings

scheme, rest = settings.SESSION_CACHE.split(':', 1)
host = rest[2:-1]
cache = CacheClass(host, {})
  1. قم بتحديث ملف settings.py الخاص بك:
1
2
SESSION_ENGINE = "yourproject.session_backend"
SESSION_CACHE = 'memcached://127.0.0.1:11200/'
  1. ابدأ نسخة Memcached جديدة على المنفذ 11200.

فوائد هذا النهج

  1. تحسين الأداء: تتم إدارة الجلسات الآن في الذاكرة، وهي أسرع بكثير من استعلامات قاعدة البيانات.
  2. استمرارية جلسة المستخدم: يبقى المستخدمون مسجلين الدخول حتى عند مسح ذاكرة التخزين المؤقت الرئيسية للتطبيق.
  3. قابلية التوسع: يسمح فصل تخزين الجلسات بتوسيع البنية التحتية للتخزين المؤقت بسهولة أكبر.

نصائح التنفيذ

  • تأكد من تأمين نسخ Memcached بشكل صحيح، خاصة إذا كانت تعمل على خادم منفصل.
  • راقب استخدام الذاكرة لنسخة Memcached الخاصة بالجلسات لمنع التدفق الزائد.
  • فكر في تنفيذ سياسات انتهاء صلاحية الجلسة لإدارة الجلسات غير النشطة لفترة طويلة.

من خلال تنفيذ إعداد Memcached المزدوج هذا، ستلاحظ تحسنًا كبيرًا في أداء تطبيق Django الخاص بك وتجربة المستخدم. يسمح فصل المسؤوليات بإدارة أكثر مرونة لذاكرة التخزين المؤقت دون تعطيل جلسات المستخدم.

هل قمت بتنفيذ هذا الحل أو لديك أسئلة؟ لا تتردد في التواصل معي على [email protected]. أنا دائمًا متحمس لمناقشة تحسينات Django ومساعدة المطورين الزملاء في تعزيز تطبيقاتهم.

برمجة سعيدة، وليكن تطبيق Django الخاص بك سريعًا ومستقرًا دائمًا!

Writing about the internet