Laravel Artisan 缓存命令详解
很多时候,当您正在开发 Laravel 应用程序时,您可能会发现在测试时,您在代码中所做的更改在应用程序上没有得到很好的反映。
通常,这种情况很可能是由 Laravel 框架应用的缓存引起的。
以下是您可以在终端中运行以缓解该问题的一些常用命令。
❗️ 确保你在应用程序上下文中运行它们。也就是说,你的终端当前与 Laravel 应用程序位于同一目录中。
1. 配置缓存
缓存配置有助于将应用程序的所有配置选项组合到一个文件中,该文件将由框架快速加载。
清除配置缓存
但是,如果您注意到文件中配置值的更改.env
没有反映在您的应用程序中,您可能需要考虑使用以下命令清除配置缓存:
$ php artisan config:clear
Configuration cache cleared!
如果您想在清除配置缓存后快速重置它们,您可以运行以下命令:
$ php artisan config:cache
Configuration cache cleared!
Configuration cached successfully!
缓存配置也有助于清除当前配置缓存。因此,无需同时运行这两个命令,可以节省您的时间。
2. 路由缓存
缓存路由将大大减少注册应用程序所有路由所需的时间。添加新路由时,必须清除路由缓存才能使新路由生效。
清除路线缓存
以下命令将清除应用程序中的所有路由缓存:
$ php artisan route:clear
Route cache cleared!
要再次缓存您的路线,只需运行以下命令:
$ php artisan route:cache
Route cache cleared!
Routes cached successfully!
再次,仅运行上述命令就足以清除之前的路由缓存并重建一个新的。
3.视图缓存
视图会被缓存到已编译的视图中,以提高请求的性能。默认情况下,Laravel 会先判断未编译视图的修改时间是否比已编译视图的修改时间更近,然后再决定是否需要重新编译视图。
清除视图缓存
但是,如果由于某种原因您的视图未反映最近的更改,您可以运行以下命令来清除所有已编译的视图缓存:
$ php artisan view:clear
Compiled views cleared!
此外,Laravel 还提供了一个 Artisan 命令来预编译应用程序使用的所有视图。同样,该命令还会在重新编译一组新视图之前清除视图缓存:
$ php artisan view:cache
Compiled views cleared!
Blade templates cached successfully!
4. 事件缓存
如果您在 Laravel 应用程序中使用事件,建议缓存事件,因为您可能不希望框架在每次请求时扫描所有监听器。
清除事件缓存
当您想要清除缓存的事件时,您可以运行以下 Artisan 命令:
$ php artisan event:clear
Cached events cleared!
同样,缓存事件也会在重建新缓存之前清除框架中所有现有的缓存:
$ php artisan event:cache
Cached events cleared!
Events cached successfully!
5. 应用程序缓存
使用 Laravel 的缓存是加速应用程序中频繁访问数据的有效方法。在开发涉及缓存的应用程序时,了解如何正确刷新所有缓存以测试缓存是否正常工作非常重要。
清除应用程序缓存
要清除应用程序缓存,您可以运行以下 Artisan 命令:
$ php artisan cache:clear
Application cache cleared!
这将清除存储中所有缓存数据,这些数据通常存储在 中/storage/framework/cache/data/
。其效果类似于Cache::flush();
通过代码调用 Facade 方法。
❗️此命令不会清除存储在目录中的任何配置、路由或视图缓存
/bootstrap/cache/
。
6.清除所有缓存
Laravel 提供了一个便捷的 Artisan 命令,可以帮助清除我们上面介绍的所有缓存。这是一种重置应用程序中所有缓存的便捷方法,无需运行之前介绍的多个命令。
要清除所有 Laravel 的缓存,只需运行以下命令:
$ 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!
正如您从终端反馈中所看到的,Laravel 应用程序中存在的所有缓存类型都将被完全清除,事件缓存除外。
❗️
Compiled services and packages files removed!
可以通过命令单独运行$ php artisan clear-compiled
。它用于删除框架中已编译的类文件。
🎁 奖励
如果上述 Laravel 的 Artisan 命令似乎无法解决您面临的问题,您可能需要查看项目中可能导致该问题的其他相关环境。
在构建 Laravel 项目时,通常会使用 Composer 依赖管理器来管理 PHP,并使用 NPM 来管理项目中可能需要的 JavaScript 库。需要注意的是,这两个包管理器都使用了某种形式的缓存来提升性能。
清除 Composer 缓存
有时,你刚通过 Composer 安装的新软件包似乎根本无法工作。或者你刚从仓库克隆的新项目似乎无法正常运行。
此类问题通常是由于新安装的库类的类映射错误引起的,或者某个库的缓存版本与你刚刚克隆的项目代码库所需的版本不匹配。在这种情况下,你需要运行以下命令来更新 PHP 自动加载器:
$ composer dump-autoload
以及以下任何变体(它们都实现了从 Composer 的缓存目录中删除所有内容的相同目的):
$ composer clear-cache
$ composer clearcache
$ composer cc
清除 NPM 缓存
清除 NPM 缓存:
$ npm cache clean --force
🏁 摘要
这就是您需要了解的有关 Laravel 的 Artisan 缓存相关命令的全部内容,以及 Composer 和 NPM 的一些附加命令,您很可能会在 Laravel 项目中一起使用它们。
这是我们结束文章之前的最后一条命令:
$ php artisan list
上述命令执行后会列出所有可用的 Artisan 命令。我建议你看一下,说不定能发现一些对你有用的新东西!
❗️ 感谢您的阅读!如果您觉得本文有用,欢迎分享给您的粉丝。🦊
📚 参考文献
- https://laravel.com/docs/6.x/configuration#configuration-caching
- https://laravel.com/docs/8.x/controllers#route-caching
- https://laravel.com/docs/8.x/views#optimizing-views
- https://laravel.com/docs/8.x/events#event-discovery
- https://laravel.com/docs/8.x/cache#removing-items-from-the-cache
- https://getcomposer.org/doc/03-cli.md#dump-autoload-dumpautoload-
- https://getcomposer.org/doc/03-cli.md#clear-cache-clearcache-cc
- https://docs.npmjs.com/cli/v6/commands/npm-cache