۱۹ تکنیک ساده برای افزایش سرعت در دروپال

تصویر 19 تکنیک ساده برای افزایش سرعت در دروپال

بهبود کارایی دروپال به خودی خود می تواند تخصص پیچیده ای باشد.مشاوران و دفاتر نمایندگی دروپال شاید روزها یا حتی هفته ها را صرف بررسی مشکلات مربوط به عملکرد دروپال کنند. اما راه حلهای سریع و روشهای ساده ای هم وجود دارند که می توانید آنها را خیلی سریع اجرا کنید.

لازم نیست حتماً همه‌ی آنچه را که در این لیست می بینید اجرا کنید بلکه می توانید تعدادی از آنها را پیاده سازی کرده و تفاوت ایجاد شده درسرعت سایت را ملاحظه کنید.

دو ابزار عالی برای مشاهده و تشخیص تغییراتی که ایجاد کرده اید وجود دارد YSlow و GTmetrix . قبل و بعد از اعمال هر تغییری معیارهای کلیدی (زمان بارگزاری صفحه، اندازه صفحه، تعداد درخواستهای HTTP  و رتبه‌ی سرعت کلی) را یادداشت کنید تا با در نظر گرفتن تفاوتها ی ایجاد شده مطمئن شوید در مسیر درست حرکت می‌کنید یا نه. همچنین می توانید ابزارهایی مانند JMeter  و Apache Bench  را هم امتحان کنید.

انباشتگی و کشینگ هسته

فعال کردن کشینگ صفحه‌ در هسته

 شاید فعال کردن کشینگ پیش فرض، بدیهی به نظر برسد اما افراد زیادی آن را فراموش می کنند. با این کار کل صفحه‌ی ارائه شده ، در جدول کش(cache table) ، کش می شود. بنابراین هنگام ارائه هر صفحه ای، آن صفحه بدون اجرای درخواستهای بیشمار ، فقط از یک جدول کش منفرد نمایش داده می شود.به این ترتیب کارایی به طور قابل ملاحظه ای افزایش می یابد. اما این روش فقط برای کاربران نا شناس (غیر لاگین) موثر است، زیرا از آنجا که صفحات برای کاربران لاگین داینامیک هستند و شاید برای هر کاربری متفاوت باشند، بنابراین کشینگ کل صفحات خیلی دشوارتر است.

کشینگ صفحه را می توانید در صفحه‌ی تنظیمات کارایی هسته فعال کنید که زیر پیکربندی<- کارایی قراردارد (performance/development/config/admin).

فعال کردن کشینگ بلاک‌ در هسته

درحالیکه کشینگ صفحه، کل صفحات را کش می کند، کشینگ بلاک، بلاکهای مجزا را کش می کند که به دو دلیل مفید است: ۱) اگر کشینگ صفحه را خاموش کرده باشید بلاکها کش می شوند و ۲) حتی اگر کشینگ صفحه را روشن کرده باشید برای کاربران تایید شده (لاگین) عمل نمی‌کند، بنابراین کشینگ بلاک برای این کاربران به عنوان عاملی برای بهبود کارایی عمل خواهد کرد.

کشینگ بلاک را می توانید در صفحه‌ی تنظیمات کارایی هسته فعال کنید که زیر پیکربندی<- کارایی قراردارد (performance/development/config/admin).

فعال کردن فشرده سازی CSS و JS

در همان فرم مدیریت، مانند کشینگ پیش فرض، می توانید فشرده سازی CSS و JS  را فعال کنید. اگر فشرده سازی خاموش بماند، فایلهای CSS و جاوا اسکریپت بسیار زیادی خواهید داشت که هر یک از این فایلها یک درخواست HTTP جداگانه دارند و داشتن تعداد زیادی درخواست، سرعت بارگزاری صفحات را کاهش می دهد. با فعال کردن فشرده سازی، تعداد فایلهای CSS و JS  کاهش یافته و به فقط چند فایل تبدیل می شوند که در نتیجه تعداد درخواستهای HTTP بسیار کاهش می یابند.

فشرده سازی CSS و JS را می توانید در صفحه‌ی تنظیمات کارایی هسته فعال کنید که زیر پیکربندی<- کارایی قراردارد (performance/development/config/admin).

کشینگ ویوز

فعال کردن کشینگ ویوز

ویوز محبوبترین ماژول موجود در دروپال است (و در دروپال ۸ در هسته قرار خواهد داشت) که در اکثر سایتها از آن استفاده می شود.

بدون کشینگ، هر بار که یک کاربر درخواست صفحه ای که ویو دارد را می دهد یک کوئری دیتابیس انجام می‌شود. این کوئری های دیتابیس زمان بارگزاری صفحه را افزایش می دهند. اما اگر کش ویوز را فعال کنید، نتیجه در جدول کش ویوز ذخیره شده و در طول مدت کش، به جای اینکه هر دفعه کوئری اجرا شود از آن استفاده می کند.

کشینگ ویوز برای کاربران لاگین (کاربران تائید شده) فوق العاده است زیرا خروجی ویو همواره کش می شود حتی اگر بقیه‌ی صفحه کش نشود.

فعال کردن کش محتوای ویوز/ Views Content Cache

نقطه‌ی ضعف کشینگ ویوز این است که نتایج بدست آمده لحظه ای نیستند و تاخیر دارند.مثلاً  اگر زمان کش را برای ۱۰  دقیقه تنظیم کرده باشید، نتایج برای ۱۰ دقیقه‌ی متعاقب ‌یکسان خواهد بود. اگر محتوای بازگشتی  از یک ویو تغییر کرده باشد ، نسخه‌ی کش شده‌ی جدید آن ویو ارائه نمی شود. در واقع مجبورید ۱۰دقیقه کامل صبر کنید.

کش محتوای ویوز این مشکل را حل می کند. به این صورت که محتوایی که ویو برمی گرداند را ملاحظه کرده و اگر آن محتوا تغییر کرده باشد کش را پاک می کند.

برای استفاده از ماژول کش محتوای ویوز، بعد از فعال کردن ماژول به قسمت تنظیمات اصلی ویوز به آدرس admin/structure/views/settings بروید،در انتهای صفحه:گزینه های کشینگ، رویدادهایی را که می خواهید برای بروز رسانی ویو از آنها استفاده شود را انتخاب کنید.

فعال کردن کش بلاک ویوز

دروپال بطور درون ساختی دارای کش بلاک است. بلاکهایی که از سمت ویوز ایجاد می شوند به طور پیش فرض کش نمی شوند اما از طریق کشینگ بلاک ویوز می توان آنها را کش کرد. برای یک ویوی ارائه شده به تنظیمات پیشرفته مراجعه کنید، در قسمت پائین آن باید کشینگ بلاک را ببینید. یا انتخاب می کنید که بلاک ویوز را یک بار کش کند یا انتخابتان خیلی مجزاتر خواهد بود مثلاً برای هر صفحه، هر نقش، هر کاربر.

فعال کردن ویوز Litepager

اگر پیجر پیش فرض یا مینی پیجر را روی ویوز فعال کرده باشید، می بایست شمارش کوئریها برای اولین و آخرین شماره صفحه اجرا شودکه باعث افزایش زمان پردازش می شود، و مخصوصاً هنگام استفاده از موتور InnoDB  مای اسکیوئل کند و سنگین است (InnoDB برای سایتهایی که ترافیک بالایی دارند توصیه می شود).

ویوز Litepager به این طریق که فقط لینکهای قبلی و بعدی را نمایش می دهد، لزوم شمارش این کوئریها را رفع می کند. برخی قابلیتها را از دست می دهید ولی در عوض سرعت بارگزاری صفحات افزایش می یابد.

فایلهای Flat HTML

فعال کردن ماژول Boost

ماژول Boost تمام صفحات دروپال را به فایلهای flat HTML تبدیل کرده و آنها را در یک پوشه‌ی کش/ (cache folder ) ذخیره می کند.هنگامیکه کاربری یکی از صفحات را می بیند، سرور فایل کش شده را از دیسک برمی‌گرداند و هیچ پردازش پی اچ پی و مای اسکیوئلی انجام نمی شود. این امر تفاوت زیادی را در سرعت بارگزاری صفحه ایجاد می کند.Boost به ویژه برای سایتهای کوچکتری که بر روی سرور میزبانی مشترکی که امکان استفاده از وارنیش را ندارند، مفید می باشد.(وارنیش به جای اینکه صفحات را در سیستم فایل کش کند، در حافظه کش می کند که خیلی سریعتر است).Boost برای کاربران غیر لاگین کار می کند، اما کاربرانی که لاگین (تایید شده) هستند صفحات را با همان سرعت معمولی دروپال دریافت می کنند.

خطاهای Faster ۴۰۴

فعال کردن ماژول Fast ۴۰۴

اگر سایت شما دارای تصاویر شکسته و مسیرهای فایل CSS باشد،سرعت بارگزاری صفحات به طور قابل توجهی کاهش خواهد یافت. اگرچه دروپال تلاش می کند تا این مسیرها را برای هر صفحه ای که در آن قرار دارند بارگزاری کند اما آنها خطای ۴۰۴ می دهند (صفحه یافت نشد). دروپال در مقابل خطای ۴۰۴ یک خود راه اندازی کامل (full bootstrap) انجام می دهد که منابع زیادی را مصرف می کند.

ماژول Fast ۴۰۴  روش مدیریت خطاهای ۴۰۴ را از طریق ارسال پیامهای خطای fast ۴۰۴ تغییر می دهد.

غیر فعال کردن ماژولهای بد موجود در هسته

حذف ماژول آمار(Statistics)

ماژول آمار، داده هایی مشابه داده های Google Analytics را جمع آوری می کند، داده هایی از قبیل اینکه چند بار یک محتوا دیده شده است. که این امر باعث می شود در بارگزاری هر صفحه ای دیتابیس‌های متعددی نوشته شود.

توصیه می شود به جای ذخیره‌ی این اطلاعات دیتابیسی، ازGoogle Analytics   (یا یک سیستم تحلیلی مشابه) استفاده کنید. برای داشتن این قبیل داده های  Goolegle Analyticsمی‌توانید از ماژول

Google Analytics Reports   استفاده کنید،که به این ترتیب می توانید آن اطلاعات را همچنان در رابط دروپالی ببینید.

غیر فعال کردن فیلتر PHP (PHP Filter )

ماژول فیلتر PHP به شما اجازه‌ی استفاده از یک قالب متنی PHP می دهد. این بدان معناست که شما می توانید PHP را در یک پایگاه داده ذخیره کرده و در بارگزاری صفحه آن را اجرا کنید. این هم یک مشکل امنیتی است و هم یک مشکل اجرایی و هرگز نباید انجام شود. همه‌ی کدها باید در ماژولها باشند نه در دیتابیس.

برای حذف آن، به سادگی ماژول فیلتر PHP را غیر فعال کنید. خود ماژول را پاک نکنید زیرا یک ماژول هسته ای  است.

غیر فعال کردن مدیر بروزرسانی(Update Manager)

مدیر بروزرسانی با آمارگیری از Drupal.org  ماژولهای تاریخ گذشته‌ای که لازم است بروز رسانی شوند را مشخص می کند. با وجود اینکه ضروری است که بدانید کدام ماژولها نیاز به بروزرسانی دارند، اما بررسی این امر باعث می شود به سرور بار اضافی وارد شود.

اگر یک سایت فازبندی یا در حال توسعه دارید، می توانید مدیر بروزرسانی را بجای سایت اصلی روی آن نصب کنید.

کاهش تعداد ماژولها

محدود کردن تعداد ماژولهای  در حال استفاده

با نصب و فعال سازی هر ماژولی، زمان اجرای صفحه افزایش می یابد. بنابراین هر ماژولی را که فکر می کنید ممکن است لازم داشته باشید نصب نکنید- به راستی راجع به اینکه عملاً چه ماژولهایی را نیاز دارید فکر کنید.

در بسیاری از موارد،ساختن یک ماژول سفارشی برای انجام آنچه که دقیقاً نیاز دارید بهتر است از اینکه یک ماژول حجیم را نصب کنید و فقط از ۱۰% قابلیت آن استفاده کنید.این امر به ویژه زمانی صحت دارد که تعداد متعددی ماژول را بکار می‌گیرید تا به قابلیت دلخواهتان برسید.

غیر فعال کردن و حذف ماژولهای غیر قابل استفاده

شما (یا توسعه دهندگان شما) ممکن است ماژولها را بدون اینکه اول آنها را غیر فعال کنید ،حذف کنید. این بدان معناست که آنها هنوز در دیتابیس فعال هستند حتی اگر از فایل سیستم پاک شده باشند.

این ماژولها را می توانید با استفاده از ماژولهای Clean Missing یا ماژول Missing پیدا کرده و سپس آنها را غیر فعال کنید.

تصاویر

تغییر اندازه تصاویر

زمان زیادی برای بارگزاری تصاویری که اندازه‌شان بزرگ است طول می کشد. تا جائیکه ممکن است باید اندازه تصاویر را تغییر دهید تا بزرگتر از آنچه که لازم است نباشند. برای فیلدهای تصویر می توانید از image styles  به آدرس (admin/config/media/image-styles) برای تغییر اندازه‌ی تصاویر به اندازه‌ی مورد نظرتان استفاده کنید.

فیلتر تغییر اندازه‌ی تصویر (Image Resize Filter)  تغییر اندازه‌ی تصاویر درون خطی که از طریق یک ویرایشگر WYSIWYG مانند tinyMCE یا CKeditor درج شده اند را خیلی آسانتر می کند. اگر ارتفاع و عرض یک تصویر را تنظیم کنید ، Image Resize Filter به طور اتوماتیک اندازه‌ی تصویر را مطابق آن تغییر می دهد.

نصب کردن ماژول ImageAPI Optimise

حتی زمانیکه از image styles ‪(ImageCache در دروپال ۶)‬ و Image Resize Filter استفاده می کنید تا مقیاس تصاویر را برای داشتن اندازه‌ی مناسب کم کنید، باز هم تصاویر حاوی اطلاعاتی هستند که سرعت زمان بارگزاری را کاهش می دهند. ماژول ImageAPI Optimise بدون اینکه کیفیت تصویر را تحت تاثیر قرار دهد این اطلاعات را پاک می کند.

ماژول ImageAPI Optimise نیاز به نصب ابزار خاصی روی سرور دارد. اگر به سرورتان دسترسی ندارید می‌توانید  از Smush.it در یاهو استفاده کنید که در تنظیمات قرار دارد.

کشینگ پیشرفته

نصب کردن ماژول Entity Caches

در دروپال ۷، محتوا، کاربران و تکسونومی همه entity هستند. بیشتر entity ها دارای فیلد هستند و زمانیکه هر entity بارگزاری می شود، کوئریها برای بارگزاری این فیلدها هم اجرا می شوند که در نهایت تعداد زیادی کوئری خواهیم داشت.

ماژول Entity Caches،  entityهایی که به طور کامل بارگزاری شده اند را در یک cache table کش می‌کند و از این طریق کمک می کند تا مشکل کوئریها حل شود.

استفاده از این ماژول بسیار ساده است، فقط کافی است آن را فعال کنید و هیچ تنظیماتی نیاز ندارد.

کلمه‌ی احتیاط.من شاهد بهبود قابل توجهی در عملکرد سایتهای پیچیده با مجموعه های زیادی از فیلدها بوده ام.اگر سایت ساده ای داشته باشید ممکن است این ماژول چندان فایده ای برایتان نداشته باشد.همچنین در نظر داشته باشید بین ماژول Ubercart Price Per Role وEntity Cache ناسازگاری وجود دارد.

نصب کردن ماژول فشرده سازی پیشرفته‌ی CSS/JS

گرچه فشرده سازی CSS و جاوا اسکریپت درون ساختار هسته، تعداد درخواستهایی که مرورگر نیاز دارد را از طریق متراکم کردن آنها در یک فایل، به اندازه‌ی کافی و مناسب کاهش می دهد، اما ماژول

Advanced CSS/JS Aggregation این کار را خیلی هوشمندانه تر انجام می دهد.

محدود کردن تعداد دفعات اجرای کرونcron/‎

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

کرون به طور پیش فرض هر سه ساعت یک بار اجرا می شود. این یعنی اینکه اولین کاربری که بعد از آن سه ساعت صفحه را ببیند کرون فعال می شود که درنتیجه بارگزاری صفحه خیلی کند خواهد شد.

بهترین راه حل از نقطه نظر کارایی این است که کرون را غیر فعال کرده و آن را روی سرور تنظیم کنیم که به این ترتیب در پس زمینه اجرا می شود.

خلاصه و نتیجه گیری

این مطلب، گزارش مختصر و مفیدی از بعضی از آسان ترین راه حل ها برای افزایش کارایی سایتهای دروپالی ارائه می دهد. همانطور که در ابتدا گفته شد بر تغییرات نظارت داشته باشید تا مطمئن شوید که آیا واقعاً بهبودی حاصل می شود یا نه ( استفاده از چیزهایی که درواقع هیچ کمکی به ما نمی کنند لزومی ندارد).

اگر شما هم راه حلهای سریع دیگری برای بهبود عملکرد سایت دروپالی، علاوه بر این مواردی که گفته شد سراغ دارید، در قسمت نظرات عنوان کنید.

آیا کمک می خواهید؟

اگر مایلید یک توسعه دهنده‌ی با تجربه‌ی دروپال، کارایی سایت شما را بهبود دهد با ما تماس بگیرید.

وب کاران، با تجربه‌ی چندین ساله‌ی خود به شما کمک خواهد کرد تا سایت دروپالی سریعتر و بهینه تری داشته باشید.

Bodega

میدان آرژانتین - خیابان وزرا - خیابان شهید رفیعی (۲۰) - پلاک ۱۰ - طبقه ۴ - واحد ۷ و ۸
طراحی سایت با دروپال (وب کاران)