tgoop.com/djangolearn_ir/863
Create:
Last Update:
Last Update:
️
💎 کشینگ در جنگو 💎
امروز میخوایم درباره کشینگ در جنگو صحبت کنیم. اگه مقدمات کشینگ رو بلدید، این پست براتون قابل درک تره.
❓ چرا کشینگ در جنگو مهمه؟
جنگو با ابزارهای قدرتمندی که در اختیارمون میذاره، به ما این امکان رو میده که بهینه سازی سطح بالایی رو در اپلیکیشنهامون پیاده کنیم. کشینگ یکی از این ابزارهاست که به طور مستقیم روی سرعت و عملکرد سایت تاثیر میگذاره.
🧾 انواع کشینگ در جنگو و کاربردهاشون:
1⃣ کش صفحه (Page Cache):
کل خروجی یک ویو رو ذخیره میکنه. برای صفحاتی که محتوای داینامیکی کمی دارن و تغییرشون کند هست، ایدهآله.
2⃣ فرگمنت کش (Fragment Cache):
قسمتهای مختلف یک صفحه رو به صورت جداگونه کش میکنه. این کار باعث میشه بتونیم بخشهای پویا و ایستا رو به صورت جداگونه مدیریت کنیم.3⃣ کش دیتابیس:
کوئریهای پیچیده و پرکاربرد رو کش میکنه تا بار سرور دیتابیس کاهش پیدا کنه.
4⃣ کش سرور:
دادههایی که از APIهای خارجی یا سیستمهای دیگه ای گرفته میشن رو کش میکنه تا از بارگذاری مجدد جلوگیری کنه.
⚒ ابزارهای کشینگ در جنگو:
1⃣ cache_page decorator:
سادهترین روش برای کش کردن کل صفحه است.
2⃣ cache.get() and cache.set():
برای دسترسی مستقیم به کش استفاده میشه.
3⃣ @cache_decorator:
برای تعریف دکورتورهای سفارشی کشینگ استفاده میشه.
4⃣ cache_framework:
فریمورک داخلی جنگو برای مدیریت کشینگ است.
✅ نکات مهم در پیادهسازی کشینگ:
1⃣ زمان انقضا کش:
تعیین زمان مناسب برای انقضای کش خیلی مهمه. اگه خیلی کوتاه باشه، بار سرور زیاد میشه و اگه خیلی طولانی باشه، دادههای قدیمی به کاربر نمایش داده میشه.
2⃣ کلید کش:
انتخاب یک کلید مناسب برای هر آیتم کش، به شما کمک میکنه تا به راحتی به اون آیتم دسترسی پیدا کنید.
3⃣ و Invalidation:
وقتی دادهای تغییر کرد، باید کش مربوط به اون داده رو باطل کرد تا داده جدید به کاربر نمایش داده بشه.
4⃣ و Backend های کش:
جنگو از بکاندهای کش مختلفی مثل Memcached، Redis و دیتابیس پشتیبانی میکنه. انتخاب بکاند مناسب به نیازهای اپلیکیشن بستگی داره.
حالا بریم سراغ نصب ابزار ها و کارکردن باهاشون 😁
1⃣ نصب Redis:
اول از همه باید Redis رو روی سیستممون نصب کنیم. دستور نصبش بسته به اینکه ویندوز یا لینوکس یا مک دارید فرق میکنه. میتونید توی گوگل سرچ کنید و دستوراتش رو پیدا کنید.
2⃣ نصب پکیج django-redis در جنگو:
حالا باید یه پکیج به اسم django-redis رو نصب کنیم. این پکیج مثل یه پل بین جنگو و Redis عمل میکنه. برای نصبش کافیه تو ترمینال بنویسید:
pip install django-redis
✅ تنظیمات نهایی:
حالا بریم سراغ فایل settings.py پروژه مون. اینجا باید به جنگو بگیم که از Redis استفاده کنه. یه بخش به اسم CACHES داریم که باید توش این اطلاعات رو وارد کنیم:
CACHES = {
'default': {
'BACKEND': 'django_redis.cache.RedisCache',
'LOCATION': 'redis://127.0.0.1:6379/1',
'OPTIONS': {
'CLIENT_CLASS': 'django_redis.client.DefaultClient',
}
}
}
اینجا LOCATION آدرس Redis رو مشخص میکنه. مثلاً 127.0.0.1 یعنی لوکالهاست خودمون.
حالا بریم مثال عملی بزنیم 😄
مثال پیشرفته:
from django.views.decorators.cache import cache_page
from django.core.cache import cache
@cache_page(60 * 15) # کش کردن به مدت 15 دقیقه
def my_view(request, product_id):
product = Product.objects.get(id=product_id)
related_products = cache.get(f'related_products_{product_id}')
if not related_products:
related_products = product.get_related_products()
cache.set(f'related_products_{product_id}', related_products, 60 * 15)
return render(request, 'product_detail.html', {'product': product, 'related_products': related_products})
در این مثال، ما محصولات مرتبط با یک محصول خاص رو کش میکنیم.
از cache.get() برای بررسی وجود محصول در کش استفاده میکنیم و اگه وجود نداشت، اون را محاسبه میکنیم و در کش ذخیره میکنیم.
✅ جمعبندی:
کشینگ یک ابزار قدرتمند برای بهینه سازی عملکرد وب اپلیکیشنهای جنگو هست. با درک عمیق از مفاهیم کشینگ و استفاده صحیح از ابزارهای جنگو، میتوانید وبسایتهای بسیار سریع و قدرت مند بسازید.
برای مطالعه بیشتر میتونید به داکیومنت رسمی جنگو مراجعه کنید
#جنگو #کشینگ #توسعه_وب #بهینه_سازی
BY جنگولرن
Share with your friend now:
tgoop.com/djangolearn_ir/863