Object Cache چیست؟ آموزش افزایش سرعت وردپرس

Object Cache چیست؟ آموزش افزایش سرعت وردپرس

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

Object Cache چیست و دقیقا چطوری کار میکنه؟

اگه بخوام خیلی ساده و خودمانی بگم Object Cache چیست باید بگم یه سازوکار هوشمند برای ذخیره موقت نتایج پردازش های دیتابیس هست . وقتی یه کاربر صفحه ای از سایتت رو باز میکنه وردپرس برای اینکه اطلاعات اون صفحه مثل متن عنوان نظرات و تنظیمات رو نشون بده باید کلی کوئری به دیتابیس بزنه . حالا فرض کن صد نفر همزمان بیان اون صفحه رو ببینن یعنی صد بار همون سوال های تکراری از دیتابیس پرسیده میشه !

کاری که ابجکت کشینگ انجام میده اینه که اولین باری که اطلاعات از دیتابیس خونده شد نتیجه رو به عنوان یک ابجکت یا شی داخل حافظه سریع که معمولا RAM سرور هست ذخیره میکنه . کاربر بعدی که میاد دیگه سیستم نمیره سراغ دیتابیس بلکه مستقیم میره همون داده ذخیره شده رو از رم میخونه و تحویل میده . نتیجه چیه ؟ سرعت لود به شدت میره بالا و لود روی سرور پایین میاد .

تفاوت ابجکت کش با کش صفحه (Page Cache)

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

پیج کش چیه؟

پیج کش میاد کل صفحه HTML رندر شده رو ذخیره میکنه . یعنی عکس ها متن ها و خروجی نهایی رو نگه میداره و به همه کاربرا نشون میده . این روش برای صفحات استاتیک مثل مقالات عالیه اما توی صفحاتی که دائم تغییر میکنن مثل داشبورد کاربری یا سبد خرید به درد نمیخوره .

کش آبجکت چیه؟

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

کش پیش فرض وردپرس و مشکل بزرگش

شاید برات جالب باشه بدونی که خود هسته وردپرس یه سیستم داخلی به نام WP_Object_Cache داره و به صورت پیش فرض فعاله ! پس چرا باز سایت هامون کند میشه ؟

مشکل اینجاست که کش پیش فرض وردپرس غیرپایدار یا Non-persistent هست . یعنی فقط در طول اجرای همون یک درخواست (Page Load) زنده است . به محض اینکه صفحه به کاربر تحویل داده شد کل اون دیتای کش شده پاک میشه و نفر بعدی که صفحه رو لود کنه روز از نو روزی از نو !

برای اینکه این مشکل حل بشه ما باید کش موقت شی رو پایدار کنیم تا بین درخواست های مختلف باقی بمونه . برای این کار از ابزارهایی مثل Redis یا Memcached استفاده میکنیم .

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

اگه بخوای کش اشیا رو به صورت واقعی و پایدار روی سرورت راه بندازی دوتا ابزار معروف داری که اکثر حرفه ای ها ازش استفاده میکنن :

۱. ردیـس (Redis)

محبوب ترین و قدرتمندترین ابزار برای Persistent Object Caching همین ردیس هست . دیتا رو توی رم با ساختارهای متنوع ذخیره میکنه سرعتش مافوق تصوره و قابلیت این رو داره که حتی اگه سرور ریستارت شد دیتای کش شده رو تا حدی حفظ کنه . اکثر هاستینگ های معتبر الان ماژول Redis رو پشتیبانی میکنن .

۲. مم کشد (Memcached)

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

چه سایت هایی واقعا به Object Caching نیاز دارن؟

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

۱. فروشگاه های اینترنتی و ووکامرس که محصولات زیاد و سبد خرید فعال دارن .

۲. سایت های عضویت ویژه و آموزشی که کاربرها لاگین میکنن و دیتای اختصاصی میبینن .

۳. انجمن ها و شبکه های اجتماعی مثل بادی پرس .

۴. وبسایت های خبری پربازدید که در لحظه هزاران نفر دارن بخش های مختلفش رو چک میکنن .

چطور ابجکت کش رو روی وردپرس فعال کنیم؟

پیاده سازیش خیلی سخت نیست اول باید مطمئن بشی که روی هاست یا سرور مجازیت اکستنشن php-redis یا memcached نصبه و سرویسش ران شده . بعدش کافیه یکی از پلاگین های مطرح مثل Redis Object Cache یا LiteSpeed Cache یا حتی پلاگین های معروفی مثل WP Rocket رو نصب کنی و توی تنطیماتشون گزینه مربوط به کش شی رو روشن کنی . به محض فعال شدن میبینی که تایم پاسخگویی سرور یا همون TTFB به شدت افت میکنه و سایتت نفس میکشه .

اشتراک گذاری در

دیدگاه کاربران

کاربر مهمان
لغو پاسخ

اولین دیدگاه را شما ثبت کنید.