Blog / Laravel / Artisan: clear commands
Después de ciertas acciones en Laravel
o si parece que la aplicación no actualiza cambios recién introducidos,
usamos diferentes comandos de limpieza de artisan.
-
php artisan cache:clear
Limpiar cache
-
php artisan config:clear
Limpiar configuración
-
php artisan route:clear
Limpiar rutas
-
php artisan view:clear
Limpiar vistas
-
php artisan optimize
Limpiar cache de rutas, configuración y ficheros
Configuration cache cleared!
Configuration cached successfully!
Route cache cleared!
Routes cached successfully!
Files cached successfully!
-
php artisan optimize:clear
Limpia todas las caches (vistas, aplicación, rutas, configuración y ficheros):
Compiled views cleared!
Application cache cleared!
Route cache cleared!
Configuration cache cleared!
Compiled services and packages files removed!
Caches cleared successfully!
* Nota:
php artisan optimize refresca la cache de rutas
y configuración, y cachea ficheros.
No podremos usarlo si tenemos closures
en las rutas.
Otros comandos de limpieza
Cuando estamos "construyendo" la base de datos, es muy habitual
ejecutar continuamente migraciones y seeders,
por ejemplo, con:
php artisan migrate:refresh --seed
Sin embargo, ciertos fallos, no permitirán refrescar las migraciones.
Deberemos eliminar todas las tablas de la base de datos
antes de volver a ejecutar la migración, con el comando:
Limpieza en producción sin acceso SSH
Cuando no existe la posibilidad de ejecutar comandos artisan
en terminal, podemos hacerlo mediante código, por ejemplo:
Artisan::call('cache:clear');
Deberíamos disponer algún mecanismo para ejecutar
el script, desde el panel de administración, por ejemplo,
un enlace que lleve a la ejecución del comando:
Route::get('clear-all', function()
{
Artisan::call('optimize:clear');
return redirect('dashboard')
->with(
'success',
Artisan::output()
);
})->middleware([
'auth',
'cms-admin-actions'
]);
¡Cuidado con las rutas!
En la documentación de Laravel, desde la
versión 5.5 y hasta la versión 7.x,
aparece una advertencia con respecto a las rutas con closures,
por ejemplo, esta:
Route::get('welcome', function ()
{
return view('welcome');
});
Se producirá el error:
LogicException
Unable to prepare route [welcome] for serialization. Uses Closure
que hace referencia a la ruta que viene como ejemplo en
"routes/web.php",
al ejecutar cualquiera de los comandos:
php artisan route:clear
php artisan optimize
.
La ejecución de la "limpieza" de rutas durante el despliegue,
permite optimizar la carga de las rutas de la aplicación,
muy importante si hay muchas rutas. Estas deberán ser de tipo:
FooController@bazMethod.
Sitios consultados
26-09-2020 (actualizado 28-01-2021)
Entradas relacionadas: