در دنیای امروز، یوزپلنگ ها از شیرها بالا تر اند…
پس تعجبی هم ندارد که چرا سرعت، معیاری است که که اگر در وب سایتتان نداشته باشید، هر چقدر هم عالی باشید بازدیدکنندگان سایتتان را “خسته کننده” دانسته و سایت های دیگر نیز از رتبه های بالای گوگل برایتان دست تکان می دهند!
حتما شما هم تابه حال وب سایت هایی را دیده اید که وقتی برای بار دوم آنها را باز میکنید سرعت فوق العاده بیشتری از دفعه اول دارند. احتمالاً این وب سایت ها از Redis object cache استفاده میکنند!
شما هم قطعا به عنوان مدیر وب سایت یا متخصص سئو به دنبال این هستید که بدانید این افزونه کاربردی دقیقاً چیست، چطور عمل میکند، چه تأثیری بر روی سایت دارد و چگونه باید آن را نصب و استفاده کنید.
خبر خوب این است که خوب جایی آمده اید! چون در این مقاله قرار است با مطالعه صفر تا صد Redis object cache به پاسخ تمام سوال هایتان درباره آن برسید! پس برویم سراغ اصل مطلب!
پایگاه داده Redis یعنی چه؟
قبل از هر چیز قدم به قدم مفهوم آن را برایتان باز میکنیم. Redis مخفف Remote Dictionary Server است و یک پایگاه داده NoSQL منبع باز است که به دلیل سرعت و عملکرد بالا شناخته شده است.
این پایگاه داده، داده ها را در حافظه اصلی (RAM) ذخیره می کند که به آن امکان می دهد تا به طور قابل توجهی سریعتر از پایگاه های داده سنتی که از دیسک های سخت استفاده می کنند، عمل کند.
Redis از مدل داده کلید-مقدار (key-value) استفاده می کند، به این معنی که هر داده با یک کلید منحصر به فرد مرتبط است. این موضوع بازیابی داده ها را بسیار سریع و کارآمد می کند.
Redis همچنین از انواع ساختارهای داده دیگر مانند لیست ها، مجموعه ها و داده های مرتب شده پشتیبانی می کند که آن را برای طیف گسترده ای از موارد استفاده مناسب می کند.
Object Cache چیست؟
مثالی که در مقدمه برایتان زدم یادتان است؟ میخواهم در این قسمت به شما توضیح دهم دقیقاً چگونه این اتفاق میافتد.
در واقع وب سایت ها اغلب برای نمایش محتوا به کاربران، نیازمند اجرای Request های پایگاه داده هستند. این فرآیند میتواند زمان بر باشد، به خصوص برای وب سایت های پویا که مرتباً داده ها را از پایگاه داده بازیابی می کنند.
Object Cache نتایج این ریکوئست ها در حافظه (RAM) خیره سازی می کند.
به همین دلیل در دفعات بعدی که به همان داده نیاز باشد، وب سایت به جای اجرای مجدد پرس و جو، میتواند مستقیماً از Object Cache بازیابی کند.
این فرآیند بسیار سریعتر از برقراری ارتباط با پایگاه داده است و در نتیجه منجر به بهبود قابل توجهی در سرعت بارگذاری صفحه می شود.
فقط توجه داشته باشید که چون کش ها توسط کاربران نهایی مدیریت نمی شود، اگر از هاست اشتراکی استفاده میکنید به صورت مستقیم نمیتوانید آن را مدیریت کنید بلکه باید از افزونه هایی جهت این کار استفاده کنید.
تفاوت Object Cache و Page Cache چیست؟
توجه داشته باشید که Object Cache با Page Cache (حافظه نهان صفحه) متفاوت است. Page Cache کل صفحات وب را در حافظه ذخیره می کند، در حالی که Object Cache فقط نتایج خاص ریکوئست ها را ذخیره می کند.
Object Cache معمولاً انعطاف پذیرتر و مقیاس پذیرتر است، زیرا نتایج ذخیره شده در آن می توانند برای ایجاد صفحات مختلف وب استفاده شوند.
Redis object cache چیست؟
Redis Object Cache یک ویژگی بسیار مفید برای افزایش سرعت سایت های وردپرسی به خصوص فروشگاه های اینترنتی (WooCommerce) و سایت های عضویت و انجمن ها است. این ویژگی با کاهش بارگذاری روی پایگاه داده، باعث بارگذاری سریعتر صفحات پویا می شود. در ادامه نحوه عملکرد آن را بخوانید تا کامل متوجه ماهیت آن شوید.
نحوه عملکرد Redis Object Cache
Redis Object Cache فرآیندی دو مرحلهای را برای بهبود سرعت بارگذاری صفحه وبسایتهای پویا، به خصوص آنهایی که با WordPress کار میکنند، طی میکند:
- ذخیرهسازی نتایج پرسوجو
فرض کنید کاربری از یک صفحه وبسایت بازدید میکند که نیازمند اجرای یک ریکوئست پایگاهداده برای نمایش محتوا است. در حالت عادی، وبسایت این ریکوئست را به پایگاهداده ارسال میکند، پایگاهداده نتایج را بازیابی میکند و وبسایت آن را برای نمایش به کاربر آماده میکند. این فرآیند میتواند کمی زمانبر باشد.
با فعال بودن Redis Object Cache، وبسایت پس از اجرای پرسوجو برای اولین بار، نتایج آن را در حافظه سریع Redis ذخیره میکند. این نتایج با یک کلید منحصر به فرد که نشاندهنده پرسوجوی خاص است، ذخیره میشوند.
- بازیابی نتایج ذخیرهشده
دفعه بعد که کاربری از همان صفحه بازدید میکند یا صفحهای نیازمند اجرای همان پرسوجو باشد، وبسایت ابتدا به جای برقراری مجدد ارتباط با پایگاهداده، حافظه Redis را بررسی میکند.
بنابراین وبسایت کلید مربوط به پرسوجو را جستجو میکند. اگر کلید در Redis یافت شود، نتایج ذخیرهشده بازیابی میشوند و مستقیماً برای نمایش به کاربر استفاده میگردند. این فرآیند بسیار سریعتر از برقراری ارتباط با پایگاهداده است.
مزایای عمومی استفاده از Redis Object Cache
با استفاده از Redis Object Cache میتوانید از مزایای بسیار مهم آن هم در سئو و هم در مباحث فنی وب سایت بهره مند شوید. در جدول زیر برخی از مزایای آن را به شما نشان داده ایم.
مزیت | توضیحات |
سرعت بالا | به دلیل ذخیرهسازی دادهها در حافظه، دسترسی و بازیابی دادهها بسیار سریع است. |
مقیاسپذیری | Redis میتواند به راحتی مقیاسپذیر باشد و با افزایش نیازهای سیستم هماهنگ شود. |
پشتیبانی از انواع داده | Redis از انواع دادههای مختلفی مانند رشتهها، لیستها، مجموعهها و هشها پشتیبانی میکند. |
کاهش بار پایگاه داده | با کش کردن دادهها، بار روی پایگاه داده اصلی کاهش مییابد و عملکرد سیستم بهبود مییابد. |
پایداری و قابلیت اطمینان | Redis از قابلیتهای تکرارپذیری و پشتیبانگیری برخوردار است که به حفظ پایداری و قابلیت اطمینان دادهها کمک میکند. |
سهولت استفاده | Redis به راحتی قابل پیادهسازی و استفاده است و با بسیاری از زبانهای برنامهنویسی سازگار است. |
پشتیبانی از ویژگیهای پیشرفته | شامل انتشار/اشتراک، تراکنشها و اسکریپتنویسی با Lua است که امکان پیادهسازی کاربردهای پیچیدهتر را فراهم میکند. |
مزایای استفاده از Redis Object Cache در سئو وب سایت
همچنین ممکن است مدیر وب سایت یا متخصص سئو باشید و برایتان مهم باشد که استفاده از Redis Object Cache چه مزایایی برای سئو دارد. به همین دلیل در جدول زیر انواع مزایای آن در سئو را بیان کرده ایم.
مزیت | تأثیر بر سئو |
سرعت بارگذاری سریعتر صفحه: Redis Object Cache نتایج پرس و جوهای پایگاه داده را به طور قابل توجهی سریعتر از پایگاه های داده سنتی بازیابی می کند. این امر منجر به بارگذاری سریعتر صفحات وب برای کاربران می شود. | گوگل سرعت بارگذاری صفحه را یکی از عوامل رتبه بندی خود می داند. وب سایت هایی که سریعتر بارگذاری می شوند، در نتایج جستجو رتبه بندی بهتری خواهند داشت. |
کاهش زمان بارگذاری: با کاهش زمان لازم برای بارگذاری صفحات، کاربران زمان بیشتری را در وب سایت شما سپری می کنند و احتمال اینکه محتوای بیشتری را مشاهده کنند و با آن تعامل داشته باشند، بیشتر می شود. | گوگل زمان صرف شده در سایت را سیگنالی برای تعامل کاربر با محتوا می داند. وب سایت هایی که کاربران زمان بیشتری را در آنها سپری می کنند، در نتایج جستجو رتبه بندی بهتری خواهند داشت. |
تجربه کاربری بهتر: سرعت بارگذاری سریعتر صفحه و زمان پاسخگویی سریعتر منجر به تجربه کاربری بهتری برای بازدیدکنندگان می شود. | کاربران تجربه کاربری خوب را به اشتراک میگذارند و به وبسایت شما لینک میدهند که میتواند به سئوی شما کمک کند. |
کاهش نرخ پرش: اگر صفحات وب شما به سرعت بارگذاری شوند، احتمال اینکه کاربران قبل از مشاهده محتوای کافی از وب سایت شما خارج شوند (نرخ پرش) کمتر است. | نرخ پرش بالا میتواند به سئوی شما آسیب برساند. |
مقیاس پذیری: Redis Object Cache به راحتی قابل مقیاس بندی است، به این معنی که میتواند با افزایش ترافیک وب سایت شما، ظرفیت آن را افزایش داد. | این امر به شما اطمینان می دهد که وب سایت شما میتواند حجم ترافیک را بدون افت عملکرد سئو مدیریت کند. |
کاهش بار روی سرور: Redis Object Cache با کاهش بار روی سرور پایگاه داده شما، به طور کلی عملکرد وب سایت شما را بهبود می بخشد. | این امر میتواند از خاموشی های سرور و زمان خرابی جلوگیری کند که میتواند به سئوی شما آسیب برساند. |
موارد استفاده از Redis Object Cache
دو مورد از جاهایی که استفاده از Redis Object Cache بیشترین کاربرد و تأثیر را در افزایش عملکرد دارد در فروشگاه های اینترنتی و سایت های عضویت است که در جدول زیر انواع کاربرد آنها در هرکدام از این دو نوع وب سایت شرح داده ایم.
کاربرد | وبسایتهای فروشگاه اینترنتی | سایتهای عضویت |
کش محصولات | ذخیرهسازی اطلاعات محصولات برای دسترسی سریعتر و کاهش بار روی پایگاه داده اصلی. | – |
کش سبد خرید | بهبود سرعت و عملکرد سبد خرید کاربران. | – |
مدیریت جلسات کاربری | ذخیرهسازی جلسات کاربران برای بهبود تجربه کاربری. | ذخیرهسازی جلسات کاربران برای بهبود تجربه کاربری. |
کش صفحات و محتوا | کش کردن صفحات محصولات و محتواهای ثابت برای افزایش سرعت بارگذاری. | کش کردن صفحات اعضا و محتواهای ثابت برای افزایش سرعت بارگذاری. |
پیشنهادات شخصیسازی شده | ارائه پیشنهادات سریعتر به کاربران بر اساس الگوریتمهای شخصیسازی. | ارائه محتوا و پیشنهادات شخصیسازی شده به اعضا بر اساس علایق. |
ردیابی فعالیتهای کاربران | ذخیرهسازی فعالیتهای خرید کاربران برای تحلیل و بهبود خدمات. | ذخیرهسازی فعالیتهای اعضا برای تحلیل و بهبود خدمات. |
مدیریت اطلاعیهها و پیامها | ارسال اطلاعیهها و پیامهای فوری به کاربران در مورد سفارشات و پیشنهادات. | ارسال اطلاعیهها و پیامهای فوری به اعضا در مورد محتواهای جدید. |
کش تنظیمات و پیکربندیها | ذخیرهسازی تنظیمات سایت برای دسترسی سریعتر و کاهش بار روی پایگاه داده اصلی. | ذخیرهسازی تنظیمات سایت برای دسترسی سریعتر و کاهش بار روی پایگاه داده اصلی. |
تسریع فرایند جستجو | کش کردن نتایج جستجو برای پاسخگویی سریعتر به درخواستهای جستجوی کاربران. | کش کردن نتایج جستجو برای پاسخگویی سریعتر به درخواستهای جستجوی اعضا. |
مدیریت صفهای کاری | مدیریت صفهای کاری مانند پردازش سفارشات و وظایف پسزمینه. | مدیریت صفهای کاری مانند پردازش وظایف مربوط به عضویت و محتوا. |
MEMCACHED یا REDIS مسئله این است!
همانطور که احتمالاً میدانید MEMCACHED نیز یک سیستم کش مانند ردیس است؛ اما اینکه از کدام یک استفاده کنیم بستگی به نوع کاربردی که مد نظر شماست دارد چون هر دو گزینه عالی هستند.
برای کمک به تصمیم گیری بهتر جدولی رسم کرده ایم که در آن ویژگی های هردو را میتوانید باهم مقایسه کنید.
ویژگیها | Redis | Memcached |
معماری | ذخیرهسازی دادهها در حافظه با پشتیبانی از انواع دادههای مختلف | ذخیرهسازی دادهها در حافظه به صورت کی-ولیویی |
مدل داده | کی-ولیویی، هشها، لیستها، مجموعهها، مجموعههای مرتب و غیره | کی-ولیویی ساده |
پایداری دادهها | پایداری دادهها با استفاده از snapshot و AOF | فاقد پایداری؛ دادهها در صورت قطع برق از دست میروند |
پشتیبانی از replication | پشتیبانی میکند (master-slave replication) | پشتیبانی نمیکند |
پشتیبانی از persistence | پشتیبانی میکند (snapshot و AOF) | پشتیبانی نمیکند |
پشتیبانی از transactions | پشتیبانی میکند (MULTI/EXEC) | پشتیبانی نمیکند |
اسکریپت نویسی | پشتیبانی میکند (Lua scripting) | پشتیبانی نمیکند |
پشتیبانی از clustering | پشتیبانی میکند (Redis Cluster) | پشتیبانی نمیکند |
کاربردها | کش، صفها، انتشار/اشتراک، انبار دادهها و بسیاری از کاربردهای دیگر | کش ساده برای تسریع دسترسی به دادههای موقتی |
مدیریت حافظه | خودکار با گزینههای مختلف (LRU, LFU, TTL-based eviction) | خودکار (LRU eviction) |
پشتیبانی از TTL | بله | بله |
زبانهای کلاینت | چندین زبان برنامهنویسی | چندین زبان برنامهنویسی |
پیچیدگی نصب و تنظیم | نسبتاً پیچیدهتر به دلیل ویژگیهای بیشتر | سادهتر از Redis |
مقیاسپذیری | پشتیبانی از مقیاسپذیری افقی با استفاده از Redis Cluster | محدود به یک سرور، اما میتوان چندین نمونه راهاندازی کرد |
پشتیبانی از atomic operations | بله | بله |
نصب Redis Object Cache چگونه انجام میشود؟
اگر خودتان مدیر سرور هستید به راحتی میتوانید این کار را انجام دهید اما اگر از هاست اشتراکی استفاده میکنید باید مدیر سرور را برای انجام این کار قانع کنید. بسیاری از مدیران سایت های سرور یا شناختی نسبت به این موضوع ندارند یا نمیخواهد تابع مشتری باشند.
نصب از روی هاست
با اجرای دستورات زیر اقدام به نصب Redis روی سایت خودتان نمایید.
yum install epel-release
به وسیله دستور بالا epel release را روی سایت نصب کنید. حالا نوبت به نصب ردیس کش می رسد که توسط دستور زیر این کار را انجام دهید:
yum install redis
حالا نوبت به اجرای آن می رسد:
systemctl start redis
حالا برای اینکه به صورت اتوماتیک در هنگام روشن یا ری استارت کردن سرور دستور اجرا شود دستور زیر را تایپ کنید:
systemctl enable redis
اکنون در صورتی که دستور redis-cli ping را در Terminal وارد کنید، کلمه PONG را مشاهده میکنید که کارکرد صحیح Redis را نشان میدهد.
در نهایت PHP Redis Extention را بر روی PHP خود نصب نمایید. با این عمل عملیات نصب Redis از سوی سرور شما انجام میشود.
نصب از روی وردپرس
برای اینکه افزونه Redis Object Cache را روی سایت خودتان نصب کنید، باید مراحل زیر را دنبال کنید:
- نصب پلاگین: به داشبورد وردپرس خود بروید، به قسمت “افزونهها” > “افزودن” بروید و پلاگین “Redis Object Cache” را جستجو کنید. سپس آن را نصب و فعال کنید.
- پیکربندی پلاگین: پس از فعالسازی، به بخش تنظیمات پلاگین بروید و اتصال به Redis را تنظیم کنید. معمولاً تنظیمات پیشفرض کافی هستند، اما میتوانید تنظیمات پیشرفتهتری نیز اعمال کنید.
آیا استفاده از Redis Object Cache با افزونه راکت تداخل ندارد؟
یکی از سؤال هایی که خیلی شما عزیزان در وب سایت های مختلف پرسیده بودید این بود که افزونه راکت را در وردپرس نصب کرده اید، حالا با نصب Redis Object Cache این دو باهم تداخل پیدا نمیکنند؟
پاسخ خیر است!
به طور کلی، استفاده از Redis Object Cache با افزونه Rocket مشکلی ندارد. در واقع، این دو می توانند با هم برای بهبود عملکرد وب سایت شما به طور مؤثر کار کنند.
این دو افزونه در واقع برای بهبود عملکرد وب سایت شما طراحی شده اند و بر جنبه های متفاوت عملکرد تمرکز دارند. Rocket بر بهینه سازی منابع سمت فرانت اند مانند CSS و JavaScript تمرکز دارد، در حالی که Redis Object Cache بر بهینه سازی ریکوئست های پایگاه داده تمرکز دارد. استفاده از هر دو افزونه با هم میتواند به شما کمک کند تا به حداکثر رساندن عملکرد وب سایت خود برسید.
با این حال اگر میخواهید هر دو افزونه را نصب کنید این 3 نکته را حتماً یادتان باشد:
- از تنظیمات پیش فرض هر دو افزونه استفاده کنید
هر دو افزونه به طور پیش فرض برای کار با هم پیکربندی شده اند. نیازی به تغییر تنظیمات پیش فرض مگر اینکه با مشکلی مواجه شوید نیست.
- از حافظه پنهان افزونه Rocket استفاده نکنید
اگر از Redis Object Cache استفاده میکنید، نیازی به استفاده از حافظه پنهان افزونه Rocket نیست. در واقع، استفاده از هر دو حافظه پنهان میتواند منجر به تداخل شود.
- در صورت بروز مشکل، هر دو افزونه را به طور جداگانه غیرفعال کنید
اگر با مشکلی در عملکرد وب سایت خود مواجه شدید، سعی کنید هر دو افزونه را به طور جداگانه غیرفعال کنید تا ببینید کدام یک مشکل را ایجاد می کند.
جمع بندی و نتیجه گیری
در این مقاله به بررسی کامل Redis object cache پرداختیم و مهمترین ویژگی های آنها و همچنین روش نصب آن را توضیح دادیم. در نهایت Redis object cache یک افزونه بسیار کاربردی برای افزایش سرعت وب سایت محسوب میشود که استفاده از آن میتوانید تأثیر بسیاری مثبتی هم روی تجربه کاربران و هم روی سئوی وب سایت شما داشته باشد. پیشنهاد میکنیم هر سؤال یا تجربه ای از استفاده از این افزونه دارید در بخش نظرات آن را مطرح کنید.
مقالات پیشنهادی مرتبط با کش و سرعت سایت:
معرفی و آموزش پیکربندی افزونه کش راکت وردپرس
بهترین افزونه کش وردپرس کدام است؟