بسیاری از متغییر ها و اطلاعات مورد نیاز در اپلیکیشن که ثابت هستند و تغییری ندارند، در کش لاراول ذخیره می شود تا سرعت دستیابی آن بالا رود و نیاز به مصرف سی پی یو برای هر بار اجرای اسکریپت و اپلیکیشن نباشد.
کش لاراول، به استفاده بهینه از منابع هاست به ما کمک می کند.
به این صورت که وقتی صفحه ای رندر می شود و اطلاعات آن توسط منابع هاست پردازش می شود، این اطلاعات به دست آمده در کش ذخیره می شود.
با استفاده از اطلاعات کش شده، در دفعات بعدی دیگر نیاز به پردازش و مصرف منابع هاست نیست و همان اطلاعات به صورت مستقیم از کش خوانده می شود.
خطای مربوط به کش لاراول
این مورد ممکن است در برخی موارد که این اطلاعات دچار تغییر می شوند باعث بروز خطا شوند مثلا زمانی که اطلاعات یک وب سایت لاراولی از یک شرکت دیگر به هاستینگ پارس وب سرور منتقل شده است .
انتقال اطلاعات از شرکت های دیگر به شرکت پارس وب سرور رایگان بوده و بعد از تهیه سرویس، درخواست پشتیبانی ارسال کنید تا در اسرع وقت، تمام اطلاعات شما به هاست های شرکت پارس وب سرور منتقل شود. (مشاهده جزئیات و قیمت های هاست های لاراول)
چون در اطلاعات کش شده، هنوز اطلاعات مربوط به هاست قبلی و مقادیر قبلی می باشد، اپلیکشن قادر به ارتباط و دریافت اطلاعات نمی باشد و ارور Permission denied می دهد.
UnexpectedValueException
There is no existing directory at "/home/user/domains/example.com/public_html/laravel/storage/logs"
and it could not be created: Permission denied
همینطور زمانی که پروژه ای که روی لوکال کامل و اجرا شده است، به هاست منتقل شود. بعد از انتقال بر روی هاست باید مقادیر کش آن پاک شود تا مقادیر جدید مربوط به هاست جایگزین مقادیر قبلی شود.
همینطور زمانی که تغییرات در دیتابیس وب سایت، مثل نام کاربری و دیتابیس را تغییر دادید اما با وجود ذخیره در فایل env. ، تغییرات شما اعمال نمی شود. ارورهای مختلف مثل عدم وجود دیتابیس و یا عدم دسترسی یوزر به دیتابیس نمایش داده می شود، به دلیل خواندن اطلاعات از کش لاراول می باشد.
البته اینکه کدام موارد کش شوند و یا چطور کش شوند و کدام یک از اطلاعات نیاز به کش ندارند قابل تعریف می باشد که در مستندات لاراول به آن اشاره شده است .(مستندات رسمی کش لاراول)
برای لاراول ، فایل کش در مسیر زیر ذخیره می شود .
bootstrap/cache/config.php
در این فایل، تنظیماتی مثل مسیردهی، ارتباط با دیتابیس و blade ها و … در این فایل ذخیره می شود. برای اینکه اطلاعات از این فایل خوانده نشود، می توانید این فایل را تغییر نام دهید و به انتهای نام فایل کلمه old را اضافه کنید تا به صورت config-old.php در بیاید.
در این حالت تنطیمات لاراول از کش لود نمی شود، و عموما با همین تغییر ارور کش لاراول رفع می شود.
دستورات حذف کش لاراول در محیط کامند لاین ترمینال
جهت پاک کردن کش در لاراول می توانید دستور زیر را در ترمینال در مسر پروژه وارد و اجرا کنید
php artisan cache:clear
برای پاک کردن فقط کش مسیردهی ها می توانید دستور زیر را در ترمینال وارد کنید
php artisan route:clear
خالی کردن فقط کش blade و view ها می توان دستور زیر را وارد کرد
php artisan view:clear
با دستور زیر کل کش های لاراول حذف خواهند شد
php artisan optimize:clear
حذف زمان بندی شده کش لاراول
در صورتی که نیاز باشد که به صورت فواصل زمانی منظم و به صورت خودکار کش لاراول خالی شود می توانیم این دستور را در این فایل وارد کنیم
app/console/kernel.php
دستوری که برای حذف کش به صورت روزانه و در ساعت 7 صبح انجام می شود و برای هر روز تکرار می شود.
$schedule->command('clear:data')->dailyAt('07:00');
می توانید زمان بندی را طوری تعریف کنیم که در ساعت مشخصی از روز (7 صبح در مثال بالا) کش ها را پاک کند و یا در طول هفته و یا در روز خاصی از ماه این کار انجام شود. حتما قبل از انجام تغییرات روی فایل، از فایل یک نسخه بک آپ تهیه بفرمایید و روی سیستم خود دانلود کنید.
برای مشاهده تنظیمات زمان بندی و سفارسی سازی این قسمت می توانید این قسمت را مشاهده کنید (تنظیمات زمان بندی لاراول)
اجرای دستور خالی کردن کش لاراول بیرون از محیط کامندلاین
برای استفاده از دستورات آرتیسان در خارج از محیط کامند لاین، می توانیم از دستورات در route استفاده کنیم و همان دستورات را فراخوانی کنیم
شکل کلی استفاده از دستورات در روت به صورت زیر می باشد.
Route::get('/foo', function()
{
$exitCode = Artisan::call('command:name', ['--option' => 'foo']);
//
});
برای پاک کردن کش از طریق تعریف دستور در route می توانیم از کد زیر استفاده کنیم
// clear route cache
Route::get('/clear-route-cache', function () {
Artisan::call('route:cache');
return 'Routes cache has clear successfully !';
});
//clear config cache
Route::get('/clear-config-cache', function () {
Artisan::call('config:cache');
return 'Config cache has clear successfully !';
});
// clear application cache
Route::get('/clear-app-cache', function () {
Artisan::call('cache:clear');
return 'Application cache has clear successfully!';
});
// clear view cache
Route::get('/clear-view-cache', function () {
Artisan::call('view:clear');
return 'View cache has clear successfully!';
});
با استفاده از این آموزش شما قادر خواهید بود کش لاراول خود را پاک کنید و خطاهای مربوط به کش لاراول را رفع نمایید .
چنانجه با این راهنما مشکل رفع نشد و یا در هر قسمت از این آموزش ابهام و یا مشکلی وجود داشت می توانید درخواست پشتیبانی ارسال کنید.
همکاران بخش پشتیبانی در اسرع وقت، درخواست شما را بررسی و راهنمایی های لازم خدمت شما ارسال شود. (ارسال درخواست پشتیبانی)