DJANGOLEARN_IR Telegram 863
Forwarded from Ninja Learn | نینجا لرن (Mohammad)

💎 کشینگ در جنگو 💎

امروز میخوایم درباره کشینگ در جنگو صحبت کنیم. اگه مقدمات کشینگ رو بلدید، این پست براتون قابل درک تره.

چرا کشینگ در جنگو مهمه؟
جنگو با ابزارهای قدرتمندی که در اختیارمون میذاره، به ما این امکان رو میده که بهینه سازی سطح بالایی رو در اپلیکیشن‌هامون پیاده کنیم. کشینگ یکی از این ابزارهاست که به طور مستقیم روی سرعت و عملکرد سایت تاثیر می‌گذاره.

🧾 انواع کشینگ در جنگو و کاربردهاشون:

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() برای بررسی وجود محصول در کش استفاده می‌کنیم و اگه وجود نداشت، اون را محاسبه میکنیم و در کش ذخیره می‌کنیم.


جمع‌بندی:
کشینگ یک ابزار قدرتمند برای بهینه سازی عملکرد وب اپلیکیشن‌های جنگو هست. با درک عمیق از مفاهیم کشینگ و استفاده صحیح از ابزارهای جنگو، می‌توانید وب‌سایت‌های بسیار سریع و قدرت مند بسازید.

برای مطالعه بیشتر میتونید به داکیومنت رسمی جنگو مراجعه کنید


ممنون میشم اگه خوشت اومد ریکشن بزنی و مارو فالو کنی :)

#جنگو #کشینگ #توسعه_وب #بهینه_سازی


@ninja_learn_ir
🔥20👍42



tgoop.com/djangolearn_ir/863
Create:
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() برای بررسی وجود محصول در کش استفاده می‌کنیم و اگه وجود نداشت، اون را محاسبه میکنیم و در کش ذخیره می‌کنیم.


جمع‌بندی:
کشینگ یک ابزار قدرتمند برای بهینه سازی عملکرد وب اپلیکیشن‌های جنگو هست. با درک عمیق از مفاهیم کشینگ و استفاده صحیح از ابزارهای جنگو، می‌توانید وب‌سایت‌های بسیار سریع و قدرت مند بسازید.

برای مطالعه بیشتر میتونید به داکیومنت رسمی جنگو مراجعه کنید


ممنون میشم اگه خوشت اومد ریکشن بزنی و مارو فالو کنی :)

#جنگو #کشینگ #توسعه_وب #بهینه_سازی


@ninja_learn_ir

BY جنگولرن


Share with your friend now:
tgoop.com/djangolearn_ir/863

View MORE
Open in Telegram


Telegram News

Date: |

Ng was convicted in April for conspiracy to incite a riot, public nuisance, arson, criminal damage, manufacturing of explosives, administering poison and wounding with intent to do grievous bodily harm between October 2019 and June 2020. Select: Settings – Manage Channel – Administrators – Add administrator. From your list of subscribers, select the correct user. A new window will appear on the screen. Check the rights you’re willing to give to your administrator. Commenting about the court's concerns about the spread of false information related to the elections, Minister Fachin noted Brazil is "facing circumstances that could put Brazil's democracy at risk." During the meeting, the information technology secretary at the TSE, Julio Valente, put forward a list of requests the court believes will disinformation. More>> Concise
from us


Telegram جنگولرن
FROM American