أثناء القيام بتطوير تطبيقات بإستخدام إطار العمل لارافيل، ربما نلاحظ أن التغييرات التي نقوم بها على الكود لا تنعكس ولا تؤثر على التطبيق الذي نقوم ببناءه، عادتا يكون السبب من الكاش الذي تقوم لارافيل عمله بشكل تلقائي.
في هذه المقالة أحاول شرح الأوامر الشائعه والأكثر إستخداما لتنظيف وتفعيل الكاش.
مسح الكاش (ذاكرة التخزين المؤقت)
إذا كنا نلاحظ أن التغييرات التي نقوم بها في ملف .env لا تنعكس على التطبيق، فإن أو شيئ يجب أن نفكر به هو مسح الكاش من خلال الأمر التالي
$ php artisan config:clear Configuration cache cleared!
وإذا أردنا أن يتم مسح الكاش وإعادة بناءه مرة أخرى نستخدم الأمر
$ php artisan config:cache Configuration cache cleared!
Routing Caching
يفيد عمل كاش للـ Route لتقليل الوقت المستغرق لتنفيذ عملية Route ، لكن عند إضافة Route جديد يجب القيام بمسح الكاش حتى يتم تفعيل المسار الجديد
مسح Routing Cache
$ php artisan route:clear Route cache cleared!
ولعمل كاش مره أخرى للـ Route
$ php artisan route:cache Route cache cleared! Routes cached successfully!
مره أخرى تنفيذ الأمر route:cache يغني عن تنفيذ الأمر الأول إذا كنا نريد مسح الكاش وإعادة بناؤه.
Views Caching
يفيد عمل كاش للواجهات الأمامية Views في تقليل وقت عرض الواجهات والصفحات، وبالوضع الإفتراضي فإن لارافيل تستطيع تحديد أن الصفحات التي تم عمل كاش لها حصل عليها تغيير أم لا، لكن إذا لاحظنا أن التغييرات التي قمنا بها لا تنعكس في العرض، يجب أن نفكر في مسح الكاش من خلال الأمر التالي:
$ php artisan view:clear Compiled views cleared!
بالإضافة لذلك فإن لارافيل توفر أوامر Artisan لإجراء مسح للـ View Cache مع بناء كاش جديد
$ php artisan view:cache Compiled views cleared! Blade templates cached successfully!
Event Cache
إذا كنا نستخدم Cache في التطبيق، فإنه من المفضل ان نقوم بعمل كاش لها، حتى لا يقوم لارافيل بعمل بحث لجميع listeners على كل طلب، لكن ببعض الأحيان نظطر لعمل مسح للكاش من خلال الأمر التالي:
$ php artisan event:clear Cached events cleared!
وبالمثل، فإنه يمكن تنفيذ أمر لمسح الـ event وإعادة بناؤها.
$ php artisan event:cache Cached events cleared! Events cached successfully!
Application Cache
إستخدام الكاش في لارافيل يعتبر واحد من أهم عوامل سرعة التطبيق، ويجب أخذ الكاش بأهمية بالغة، ومن المهم أيضا أن نعرف كيف نقوم بمسح وإعادة بناء الكاش في التطبيق.
مسح جميع الكاش
$ php artisan cache:clear Application cache cleared!
حيث سيؤدي الأمر لمسح جميع بيانات الكاش التي يتم تخزينا في المسار /storage/framework/cache/data/، لكن لا يؤدي هذا الأمر لمسح config , route, view cache والتي يتم تخزينها في المسار /bootstrap/cache/.
مسح جميع الكاش
توفر لارافيل أوامر Artisan مفيد تساعد في مسح جميع عمليات الكاش (التخزين المؤقت) المذكورة أعلاه، فكل ما علينا القيام به هو تنفيذ الأمر
$ php artisan optimize:clear Compiled views cleared! Application cache cleared! Route cache cleared! Configuration cache cleared! Compiled services and packages files removed! Caches cleared successfully!
كما نلاحظ من تنفيذ الأمر optimize:clear أعلاه أنه يتم مسح جميع أنواع الكاش بإستثناء event cache.
مسح الكاش دون إستخدام artisan
بعد رفع الموقع على سيرفر الإستضافه، وإذا كان shared host فإن معظم شركات الإستضافه لا توفر خدمة ssh لهذا النوع من الإستضافات، ولحل هذه المشكله يمكن إستخدام Artisan::call لتنفيذ مهام مسح وإعادة بناء الكاش.
حيث يمكن عمل ذلك في ملف route
// Remove route cache Route::get('/clear-route-cache', function() { $exitCode = Artisan::call('route:cache'); return 'All routes cache has just been removed'; }); //Remove config cache Route::get('/clear-config-cache', function() { $exitCode = Artisan::call('config:cache'); return 'Config cache has just been removed'; }); // Remove application cache Route::get('/clear-app-cache', function() { $exitCode = Artisan::call('cache:clear'); return 'Application cache has just been removed'; }); // Remove view cache Route::get('/clear-view-cache', function() { $exitCode = Artisan::call('view:clear'); return 'View cache has jut been removed'; });
إو إنشاء دالة بداخل controller
Route::get('/settings/cacheControll', 'SettingsController@cacheControll')->name('cacheControll');
public function cacheControll(){ Artisan::call('cache:clear'); Artisan::call('config:clear'); Artisan::call('config:cache'); Artisan::call('view:clear'); Artisan::call('route:clear'); return 'done'; }
إقرأ أيضا
كيفية عمل cache في laravel لجمل الإستعلام في لارافيل أسرع وتحسين أداء الموقع