在规模扩大的情况下,性能问题可能来源于对 Laravel 启动过程中值重复计算的次数,这个阶段发生在你的访客每次做出请求时(除非你使用 Octane)。因此,缓存这些值对于保持你的应用程序快速运行至关重要。但是,有时问题会发生,缓存会妨碍调试。让我们看看如何清除 Laravel 使用的所有缓存。
本文最初发布在 Benjamin Crozat 的博客上。
在 Laravel 中为什么和如何清除配置缓存
一些配置值是从你的环境文件中获取的,这可能会略微减慢速度。幸运的是,Laravel 可以将它们缓存起来,帮助我们加速应用程序。
php artisan config:clear
在 Laravel 中为什么和如何清除事件缓存
Laravel 的自动事件发现是有益的。你不需要手动注册监听器了,这是通过你在 EventServiceProvider 中做的微小改变实现的。
…
class EventServiceProvider extends ServiceProvider
{
…
public function shouldDiscoverEvents() : bool
{
return true;
}
}
在生产环境中,你可以缓存自动发现的事件,以获得最佳性能。
php artisan event:clear
在 Laravel 中为什么和如何清除路由缓存
路由是您Web应用程序或API不可或缺的一部分。如果路由非常多,解析路由将花费很多时间,正如您所猜测的,缓存可以帮助解决这个问题。
php artisan route:clear
为什么以及在Laravel中如何清除计划任务缓存
假设您有一个需要很长时间才能完成的定期任务,它将与下一次出现的时间重叠。您可以防止它在上一个任务完成之前执行
$schedule->command('some:task')->withoutOverlapping();
在幕后,Laravel使用应用程序缓存来记住哪些任务尚未完成运行。
php artisan schedule:clear-cache
为什么以及在Laravel中如何清除视图缓存
Blade指令甚至在本地的开发环境中也会被编译和缓存。有时,编译的视图可能无法与代码的最近更改保持一致。同样,您有一个命令来处理这种情况
php artisan view:clear
如何在Laravel中清除所有缓存
最后,让我们看看最终的缓存清除命令。
php artisan optimize:clear
此命令将删除以下缓存
- 配置
- 编译的类缓存
- 事件
- 通用缓存
- 路由
- 视图
如何知道?很简单。我在代码编辑器中使用“转到文件”命令搜索了“OptimizeClearCommand.php”文件。如你所见,其源代码很容易理解
…
class OptimizeClearCommand extends Command
{
…
public function handle()
{
$this->components->info('Clearing cached bootstrap files.');
collect([
'events' => fn () => $this->callSilent('event:clear') == 0,
'views' => fn () => $this->callSilent('view:clear') == 0,
'cache' => fn () => $this->callSilent('cache:clear') == 0,
'route' => fn () => $this->callSilent('route:clear') == 0,
'config' => fn () => $this->callSilent('config:clear') == 0,
'compiled' => fn () => $this->callSilent('clear-compiled') == 0,
])->each(fn ($task, $description) => $this->components->task($description, $task));
$this->newLine();
}
}
benjamincrozat 喜欢了这篇文章