نکات ساده برای بهبود عملکرد دروپال (بخش دوم)

آموزش نکاتی برای بهبود کارآیی و عملکرد دروپال و معرفی ماژول هایی برای بهبود سرعت دروپال

برای کارآیی بسازید – عملکرد صفحه

در بخش های آینده، تنظیمات مشخصی را برای بهبود عملکرد یک سایت دروپالی پیشنهاد می دهیم. تمام مثال ها در مورد دروپال 7 هستند، اما در بسیار از این موارد، تنظیماتی در دروپال 6 نیز وجود دارد.

برای مشاهده تنظیمات این بخش، به صفحه کارآیی یا Performance در سایت دروپالی خود بروید که معمولا به صورت زیر است:

http://example.com/admin/config/development/performance

برای کارآیی بسازید – عملکرد صفحه در دروپال

کش کردن بلوک

بلوک های دروپال می توانند کش شوند حتی اگر قسمت های دیگر صفحه نتوانند، بنابراین حتی بازدیدکنندگان ناشناس سایت نیز سود می برند. همچنین کش کردن بلوک ها با ماژول های تعیین دسترسی محتوا کار نمی کند. دسترسی به محتوا (content access)، یک سیستم در دروپال است که مجوز های دسترسی در سایت را مشخص می کند و به کاربران اجازه می دهد مجموعه تعریف شده از از محتوا را ببینند. با ماژول Organic Groups یا هر ماژول که node_grants را پیاده سازی می کند، تنظیم کش بلوک ها در صفحه مدیریتی Performance غیر فعال می شود.

حداقل زمان کش

به روزرسانی محتوای دروپال همه کش های بلاک و صفحه را پاک می کند. اگر به صورت مداوم محتوای سایت را به روز می کنید، این کش همواره پاک می شود و کارآیی سایت کاهش می یابد. در این موقعیت تنظیم حداقل زمان کش (minimum cache lifetime) می تواند کمک کند. مهم نیست هر چند وقت یکبار محتوای سایت به روز می شود، بلکه کش، حداقل به میزانی که تنظیم کرده اید، پاک نمی شود.

انقضای صفحات کش شده

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

بهینه سازی پهنای باند

ادغام و فشرده سازی فایل های CSS و JS یک مسئله مربوط به عملکرد در جلوی سایت است. به صورت عمومی تعداد زیادی از این فایل ها در یک سایت دروپالی وجود دارد. ادغام همه اینها، تمام فایل ها را فشرده می کند تا کارآیی سایت افزایش یافته و در سمت مرورگر سریعتر شود. روی سایت هایی که زیرِ ساخت هستند، این تنظیم می تواند کار ساخت و راه اندازی سایت را مشکل و پیچیده کند.

بهینه سازی پهنای باند در دروپال

برای کارآیی بسازید – بهبود های دیگر

ماژول Fast 404

خطای های 404 می توانند یک مشکل بزرگ برای کارآیی دروپال باشند. بدون ماژول Fast 404، دروپال قبل از اینکه تعیین کند آیا محتوای خواسته شده وجود ندارد، تمام مراحل bootstrap را انجام می دهد. ماژول Fast 404 به ما اجازه می دهد که مسیر ها و پسوند های مشخصی را جدا کرده و پیغام خطایی را به سرعت ارسال کنیم بدون اینکه از منابع به صورت غیر ضروری استفاده کنیم. دروپال 7 نسخه ابتدایی از این امکان را در فایل settings.php، دارد ولی ماژول Fast 404 وسیعتر است.

ماژول Fast 404 در دروپال

کش انحصاری ماژول

بسیاری از ماژول ها مانند Views و Panels، تنظیماتی برای کش در رابط مدیریتی خود دارند.

ماژول های رابط کاربری

اغلب، ماژول های بزرگ مانند Views، رابط مدیریتی خود را از بخش های عملیاتی جدا کرده اند. این ماژول های UI، بار اضافی بر روی سایت ایجاد می کنند که می توان آن ها را در سایت های نهایی غیر فعال کرد.

ماژول Database Logging

آخرین چیزی که مسئله ساز است، دیتابیس است. زمانی که هر چیز دیگر را بهینه سازی کردید، دیتابیس سخت ترین چیزی است که باید بررسی کنید. ماژول Database Logging در هسته دروپال، برای هر واقعه ای در سایت، پیغامی به دیتابیس ارسال می کند. در یک سایت با ترافیک زیاد، ما به همه این پیغام ها نیاز نداریم. در عوض بهتر است از ماژول Syslog استفاده کنیم که خود در داخل هسته دروپال قرار دارد. ماژول Syslog از لاگ سیستم عامل به جای دیتابیس استفاده می کند و عملکرد دروپال را تحت تاثیر قرار نمی دهد. انتخاب های دیگری نیز برای جمع آوری چنین اطلاعاتی وجود دارد. انجام همین کار می تواند 5 تا 10 درصد، بار دیتابیس را کاهش دهد.

عیب یابی – مشکلات کجا رخ می دهند

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

  • ماژول های ساخت صفحه، مانند Views و Panels: اینها قسمت هایی از سایت هستند که با داده کار می کنند که محتوای زیادی را دستکاری می کنند. اینها اولین محلی هستند که پیش بینی می شود یک سایت زمانی که مقیاس خود را افزایش می دهد با مسئله و مشکلی مواجه شود. همانطور که قبلا اشاره شد اینها می توانند از مزیت کش کردن استفاده کنند.
  • هر سرویس خارجی یا ثالث: عموماً شما کنترلی بر روی اینکه چقدر آنها سریع عمل می کنند و یا حتی آیا در حال اجرا هستند، ندارید. زمانی که شما مشکلاتی را در عملکرد سایت، تجربه می کنید، بسیار مهم است که بدانید این سرویس ها چگونه سایت را تحت تاثیر قرار می دهند.
  • پیچیدگی کل: انعطاف پذیری دروپال آن را برای ساختن سایت های پیچیده و عملیاتی بزرگ، آسان می کند. در یک نقطه مشخص، این پیچیدگی می تواند از نظر اجرای کلی آهسته تر باشد. یک مثال می تواند یک view باشد که در داخل یک panel قرار دارد که خود درون panel دیگر است، یا سایت با تعداد بسیار زیادی ماژول.
  •  عدم پیکربندی صحیح قسمت ها: بسیاری از پیکربندی های پیش فرض دروپال برای سایت های تحت توسعه خوب هستند ولی نه برای سایت های نهایی. تقریبا هیچ چیزی به صورت پیش فرض در دروپال کش نمی شود. بدانید که چه چیزی در سایت شما به کش شدن نیاز دارد و چه پیش فرض هایی بهتر است تغییر کنند. تعدادی از این موارد در بخش «برای کارآیی بسازید – بهبود های دیگر» پوشش داده شده است.

عیب یابی – فرآیند

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

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

ماژول های مرتبط با عملکرد دروپال

ماژول Devel

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

ماژول Boost

این ماژول به خوبی برای هاست های اشتراکی کار می کند. ماژول Boost برای بازدیدکنندگان ناشناس سایت، صفحات را به صورت استاتیک کش می کند و bootstrap دروپال را کاملا دور می زند.

ماژول Entity Cache

با فعال کردن این ماژول، اشیاء entity کش می شوند. با نوع محتوا های ساده یا حجم کمی از محتوا در سایت، چیزی که با این ماژول به دست می آورید، زیاد نیست. با نوع محتوا هایی پیچیده یا حجم زیادی محتوا، این ماژول به میزان زیادی، مفید خواهد بود.

ماژول Block Cache Alter

اگر نمی خواهید همه بلوک های سایت را با تنظیمات صفحه Performance در دروپال کش کنید، از ماژول Block Cache Alter استفاده کنید. با این ماژول، می توانید تنظیمات کش برای هر بلوک را به صورت جداگانه تعیین کنید.

ماژول Views Litepager

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

ماژول Views Content Cache
ماژول Cache Actions

این ماژول در کنار ماژول Rules استفاده می شود.

این ماژول ها، انقضایی برای اساس محتوا فراهم می کنند. بسیاری از کش های پیش فرض در دروپال بر اساس چارچوب های زمانی قرار دارند که انقضای کش ها با توجه به تنظیم زمان است. ماژول های Views Content Cache و Cache Actions فقط زمانی کش را پاک می کنند که محتوا تغییر کند. با ماژول Views و محتوا دیگری که به ندرت تغییر می کنند، این روش مزیت زیادی در عملکرد سایت درد. توجه کنید که ماژول Cache Actions اکشن هایی را فراهم می کند که با ماژول Rules به کار می روند.

نظرات

ممنون از مطالب خوبی که می نویسید. اگر به زودی در مورد ماژول های معرفی شده در این مطلب و عملکرد آنها نیز بنویسید، ممنون میشوم.

دستتون درد نکنه مطلب مفیدی بود. یک سوال Entity Cache چقدر در کارایی سایت تاثیر داره؟ ارزش نصب کردن رو دارد؟

تصویر admin
آقا مهدی! ماژوی entity cache وقتی که محتوای خیلی زیادی در سایت دارید، کارایی خودش را نشان می دهد. البته نمی توانیم بگوییم که مثلا یک ماژول ارزش نصب دارد یا نه. کار را باید در زمینه خودش بررسی کنید. مثلا زمان لود صفحات و میزان حافظه استفاده شده در لود صفحات را با ماژول devel قبل و بعد از نصب ماژول Entity cache بررسی کنید تا ببینید آیا نصب این ماژول عملکرد سایت را بهبود می دهد یا خیر.

سلام
خسته نباشید. ممنون. خیلی استفاده کردم

ارسال نظر