درود به همگی امیدوارم حالتون خوب باشه .
اگر شما هم از جنگو برای ساخت وب سایت یا اپلیکیشن های وب استفاده میکنید حتما میدونید که یکی از مهم ترین مسائل در دنیای امروز سرعت و عملکرده و هیچکس دوست نداره یه وبسایت کند رو تجربه کنه، و اینجاست که بهینهسازی به کمک شما میاد. اما شاید این سؤال براتون پیش اومده باشه که از کجا باید شروع کنیم؟ چطور میشه جنگو رو به شکلی تنظیم کنیم که سریعتر و کارآمدتر باشه؟
تو این مقاله، قراره با زبانی ساده و قابل فهم،به تعدادی از اصل ها و تکنیکهای بهینهسازی در جنگو اشاره کنیم و به بررسیشون بپردازیم.
اول از همه چرا عملکرد مهمه ؟ یه جمله معروف هست که میگه "first impression is the last impression"
وبسایت شما معمولاً اولین نقطهٔ تماس کاربر با کسبوکار یا پروژهتونه. اگه این تجربه کند باشه، احتمالاً کاربر خیلی زود سایت رو ترک میکنه و شما یه فرصت رو از دست میدید. علاوه بر این، موتورهای جستجو مثل گوگل هم به سرعت وبسایت اهمیت میدن و وبسایتهای سریعتر رو در نتایج جستجو بالاتر نمایش میدن. به همین دلیل، بهینهسازی عملکرد فقط برای کاربران نیست، بلکه برای دیده شدن سایت شما هم حیاتی به حساب میاد.
قدم اول : درک ساختار پروژه جنگو
قبل از شروع بهینه سازی بهتره که با ساختار پروژه های جنگو به خوبی اشنا باشید .جنگو از معماری ام وی تی (MVT) استفاده میکنه که باعث میشه کدتون رو مرتب و سازمان دهی شده نگه دارید . اتفاقا این نوع معماری یکی از دلایل بزرگ محبوبیت این فریم وورک هم هست !
اما اگر به درستی ازش استفاده نکنید ممکنه مشکلات عملکردی بزرگی ایجاد کنه بنابراین اولین نکته اینه که پروژه رو تمیز و سازمان یافته نگه دارید .قدم بعدی : بهینه سازی در سطح دیتابیس
اول اینکه از ORM جنگو به درستی استفاده کنید ، اگر از این قابلیت بی دقت استفاده کنید ممکنه کوئریهای سنگین و غیرضروری تولید کنه. مثلا به جای اینکه در هر بار خوندن داده ها چندین کوئری اجرا بشه . پیشنهاد میکنم از متود هاید select_related و prefeth_related استفاده کنید این دو در مدیریت کردن بهینه تر در ارتباط بین جداول کمک شایانی میکنن.
دوم ایجاد ایندکس ، اگه جداول دیتابیس شما بزرگ هستن، ایجاد ایندکس میتونه سرعت جستجو رو به شکل قابل توجهی افزایش بده. برای این کار میتونید در مدلهای جنگو از از db_index=True استفاده کنید .قدم سوم : مدیریت فایل های استاتیک
فایل های استاتیک مثل CSS و JavaScript نقش مهمی در عملکرد وبسایت دارن استفاده از ابزار هایی مثل Django Compressor میتونه حجم فایل هارو کاهش بده و زمان بارگذاری رو تا حد قابل توجهی پایین بیاره .
به علاوه سرو کردن فایل ها با WhiteNose هم میتونه تاثیر گذار باشه ، یکی از روش های ساده برای مدیریت فایل های استاتیک در جنگو استفاده از کتابخانه ی WhiteNose هست که فایل های استاتیک رو به شکل بهینه تری در محیط های تولیدی سرو میکنه .چهارم :بهبود تجربه کاربر با کشینگ
کشینگ یکی از بهترین روش ها برای افزایش سرعت وب سایته و خوشبختانه جنگو ابزار های متفاوتی برای این کار داره :۱٫کشینگ در سطح ویو : با استفاده از دکوریتور cache_page میتونید خروحی یه ویو خاص رو کش کنید و از اجرای مکرر اون جلوگیری کنید .
۲٫کشینگ در سطح کار با دیتا بیس : ابزار هایی مثل redios و یا Memcached میتونن کوئری های پر تکرار رو کش کنن .
۳٫کشینگ در سطح قالب : در قالب های حنگو میتونید از تگ های کشینگ برای ذخیره بخش هایی از صفحه که تغییر زیادی ندارن استفاده کنید .پنجم : مانیتورینگ و رفع مشکلات
برای اینکه مطمئن بشید اپلیکیشن شما بهینه کار میکنه، باید مرتباً عملکردش رو زیر نظر بگیرید ، اینجا ابزار هایی مثل Django debug toolbar میتونن به شما کمک کنن که ببینن کجاها ممکنه مشکلی وجود داشته باشه .
راستی از JMeter و Locust میتونید برای شبیه سازی تعداد زیادی کاربر همزمان استفاده کنید .
جمعبندی
بهینهسازی عملکرد در جنگو یه فرآیند دائمیه. با یادگیری و پیادهسازی تکنیکهایی که امروز یاد گرفتید، میتونید قدمهای مهمی در بهبود سرعت و تجربه کاربری اپلیکیشنهاتون بردارید. اگه تازهکار هستید، نگران نباشید؛ با تمرین و تکرار میتونید به یه متخصص در این حوزه تبدیل بشید.
مرسی از همراهیتون امیدوارم که این مقاله براتون مفید واقع شده باشه .
پیروز باشید