لارافيل, Others / 2024-12-27

شرح أوامر Artisan التي تتعامل مع الكاش (الذاكرة المؤقتة) في لارافيل

شرح أوامر Artisan التي تتعامل مع الكاش (الذاكرة المؤقتة) في لارافيل

2024-12-27 وقت القراءه : 3 دقائق

أثناء القيام بتطوير تطبيقات بإستخدام إطار العمل لارافيل، ربما نلاحظ أن التغييرات التي نقوم بها على الكود لا تنعكس ولا تؤثر على التطبيق الذي نقوم ببناءه، عادتا يكون السبب من الكاش الذي تقوم لارافيل عمله بشكل تلقائي.

في هذه المقالة أحاول شرح الأوامر الشائعه والأكثر إستخداما لتنظيف وتفعيل الكاش.


مسح الكاش (ذاكرة التخزين المؤقت)

إذا كنا نلاحظ أن التغييرات التي نقوم بها في ملف .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 لجمل الإستعلام في لارافيل أسرع وتحسين أداء الموقع

إضافة تعليق
Loading...