وجود کش (با به تعبیری حافظه پنهان) برای دستیابی به عملکرد بالا و مقیاس پذیری ضروری است. برای جلوگیری از تاخیر در پاسخگویی APIها و کاهش زمان بارگذاری صفحه، اجرای استراتژی ذخیره سازی مناسب و درست در مرحله توسعه بسیار مهم است. لاراول یکی از محبوبترین فریمورکهای PHP است، بنابراین لازم است پیادهسازی استراتژی بهینه کش لاراول برای تجربه کاربری بهتر و تأثیر تجاری بیشتر رعایت شود.
در این مقاله، استراتژیهای پیادهسازی و کار با کش در لاراول را بررسی میکنیم. با نحوه کار کش لاراول، چندین کوئری کش لاراول و نحوه مدیریت کش در برنامه های لاراول آشنا خواهید شد.
چرا کش (ذخیرهسازی در حافظه پنهان) مهم است؟
با رونق اخیر در کسب و کارهای اینترنتی، شرکتهای مختلف آماری دارند که نشان میدهد چگونه بدون استفاده از کش، زمان بارگذاری وبسایت و عملکرد ضعیف میتواند تأثیر زیادی بر سئو، تعامل کاربر و نرخ جذب مشتری داشته باشد. این مسئله به استراتژی ذخیره سازی در هنگام شروع توسعه اپکلیکیشن بر میگردد.
مطالعهای آنلاین نشان داد که «۱ ثانیه زمان تاخیر بارگذاری، برای آمازون ۱/۶ میلیارد دلار در سال هزینه خواهد داشت.»
مطالعه دیگری در گوگل نشان میدهد: « اگر نتایج جستجو حتی کسری از ثانیه کند شوند، افراد کمتر جستجو میکنند (به طور جدی: تأخیر ۴۰۰ میلیثانیه منجر به کاهش ۰/۴۴ درصدی حجم جستجو، از طرف کاربران میشود). و این بی حوصلگی فقط به جستجو محدود نمیشود: از هر پنج کاربر اینترنت، چهار نفر اگر ویدیویی در حین بارگیری متوقف شود، صفحه را ترک میکنند.
کندی جزئی در زمان بارگذاری صفحه وب در سایت شما می تواند تأثیر زیادی بر تجربه کاربران شما و از دست دادن سرمایه در کسب و کار شما داشته باشد.
کش لاراول چیست؟
در لاراول یک پیاده سازی قوی و آسان برای استفاده از کش و بکاندهای مختلف کش ارائه شده است. با کش لاراول، می توانید به طور موثری بین بسیاری از موتورهای کش بدون نوشتن هیچ کدی جابجا شوید. میتوانید پیکربندی کش لاراول را در پوشه config/cache.php مشاهده کنید، اگرچه احتمالاً فقط به فایل env. برای جابهجایی بین پشتیبانهای مختلف کش نیاز داشته باشید چون که بیشتر تنظیمات را میتوانید در آن انجام دهید. کش لاراول همچنین روش های عملی زیادی را ارائه می دهد که می توانیم از آنها برای پیاده سازی استراتژی های مختلف کش استفاده کنیم.
درایورهای کش در لاراول و مقایسه بین آنها
کش لاراول پشتیبان ها و درایورهای ذخیره سازی بسیار خوبی را فراهم می کند. بسته به مورد استفاده خود، می توانید بین آنها جابجا شوید تا عملکرد برنامه و زمان بارگذاری خود را افزایش دهید. همانطور که گفته شد، کش لاراول همچنین یک راه بیوقفه برای ایجاد یک بکاند سفارشی و استفاده از آن با کش لاراول ارائه میکند، اما فقط وقتی از آن استفاده میشود که سیاست ذخیرهسازی (Caching) شما در لیست زیر وجود نداشته باشد. در ادامه در مورد لیست تمام پشتیبان های ارائه شده توسط کش لاراول صحبت خواهیم کرد.
۱. File
درایور فایل پشتیبان پیشفرضی است که توسط کش لاراول استفاده میشود، زمانی که هیچ درایوری در فایل env. مشخص نشده باشد. این نوع کش برای ذخیره داده در یک فایل رمزگذاری شده در مسیر storage/framework/ طراحی شده است. لاراول یک فایل رمزگذاری شده با داده ها و کلید کش زمانی که داده های جدید کش می شوند ایجاد می کند. هنگامی که کاربر در تلاش برای بازیابی محتوا است، همین اتفاق می افتد. کش لاراول کلید مشخص شده را در پوشه جستجو می کند و در صورت یافتن، محتوا را برمی گرداند. پشتیبان فایل بدون نقص کار می کند و نسبت به دیگر دراویورهای کش زمان نصب و پیکربندی کمتری میبرد، و در عین حال می تواند گزینه مناسبی برای توسعه (development) نیز باشد. این نوع کش سریعتر از دسترسی مستقیم به داده های روی دیتابیس است.
برای استفاده از درایور فایل، باید کد زیر را به فایل env. خود اضافه کنید:
CACHE_DRIVER=file
۲. Array
درایور آرایه یک پشتیبان کش کامل برای اجرای تست های خودکار است و به راحتی با Github Actions، Jenkins و غیره پیکربندی می شود. بکاند آرایه داده های کش شده را در یک آرایه در PHP ذخیره می کند و نیازی به نصب یا پیکربندی درایوری از سوی شما ندارد. برای تستهای خودکار کاملاً بهینه شده است و کمی سریعتر از پشتیبان کش فایل است. برای استفاده از درایور آرایه، کد زیر را به فایل .env خود اضافه کنید:
CACHE_DRIVER=array
۳. Database
هنگام استفاده از درایور پایگاه داده، داده ها برای فرآیند فعلی PHP در حافظه ذخیره می شوند. بنابراین، باید یک جدول پایگاه داده برای ذخیره داده های کش شده ایجاد کنید. علاوه بر این، کش پایگاه داده با توزیع بار کاری پرس و جو از بکاند به چند فرانت اند، مقیاس پذیری را بهبود می بخشد.
می توانید با استفاده از دستور php artisan cache:table به صورت خودکار اسکیمای پایگاه داده مورد نیاز برای درایور پایگاه داده را ایجاد کنید. درایور پایگاه داده عمدتاً در شرایطی استفاده می شود بخواهید هر نرم افزاری را بر روی پلت فرم هاست خود نصب کنید.
به عنوان مثال، فرض کنید از یک طرح میزبانی رایگان با گزینه های محدود استفاده می کنید. برای آن، پیشنهاد میشود از درایور فایل استفاده کنید زیرا درایور پایگاه داده در بیشتر موارد ضعیفترین قسمت برنامه شما است و تلاش برای وارد کردن دادههای بیشتر به آن ایده خوبی نیست.
برای استفاده از درایور پایگاه داده، کد زیر را به فایل .env خود اضافه کنید:
CACHE_DRIVER=database
۴. Redis
درایور redis از فناوری کش مبتنی بر حافظه به نام Redis استفاده می کند. اگرچه در مقایسه با سایر درایورهای کش که در بالا توضیح داده شد، سریع است، اما نیاز به نصب و پیکربندی کتابخانههای دیگر دارد.
برای استفاده از درایور redis، کد زیر را به فایل env. خود اضافه کنید:
CACHE_DRIVER=redis
۵. Memcached
Memcached به عنوان محبوبترین ذخیرهساز کش مبتنی بر حافظه شناخته میشود. اگر حاضر هستید کتابخانهای third-party روی سرور حود نصب و کانفیگ کنید، درایورهای حافظه نهان مبتنی بر حافظه Memcached گزینه های خوبی هستند زیرا استفاده از درایور memcached مستلزم نصب بسته Memcached PECL است.
برای استفاده از درایور memcached، کد زیر را به فایل env. خود اضافه کنید.
CACHE_DRIVER=memcached
با این توضیحات مشخص شده که بهترین درایور حافظه پنهان برای استفاده و عملکرد بستگی به پروژه شما و مقدار داده ای که باید بازیابی شود دارد.