请问 Laravel 中的路由缓存有什么用?

照我的理解,都是语言级别的文件读取,重建一个缓存路由的文件和直接处理匹配web.php的路由配置没有什么不同,但为什么会加快速度呢。望解释

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
最佳答案

先说说走缓存方法的:

你可以看看路由服务提供者的启动方法Illuminate\Foundation\Support\Providers\RouteServiceProvider::boot
缓存的路由直接把缓存文件读取过来

file

file

缓存文件大概长这个样

file

反序列化之后,这个路由类里已经存有所有定义好的路由

不走缓存的

而不是缓存的就走这里:

file

file

file

file

因为不存在这个方法:

file

然后调用 group 方法

file

file

因为前面传入的是路由文件名,就直接 require 了。

file

而我们的 web.php 又做什么呢,这个每个都都不同。大多数都是:

Route::get();
Route::post();

真正耗时间的应该是这里了,如果你有一百条路由 你每一个动态的方法都要:

file

file
后面可能很多,你可以自己再去看看。后面还要拼接前缀,中间件之类的,

5年前 评论
讨论数量: 2

先说说走缓存方法的:

你可以看看路由服务提供者的启动方法Illuminate\Foundation\Support\Providers\RouteServiceProvider::boot
缓存的路由直接把缓存文件读取过来

file

file

缓存文件大概长这个样

file

反序列化之后,这个路由类里已经存有所有定义好的路由

不走缓存的

而不是缓存的就走这里:

file

file

file

file

因为不存在这个方法:

file

然后调用 group 方法

file

file

因为前面传入的是路由文件名,就直接 require 了。

file

而我们的 web.php 又做什么呢,这个每个都都不同。大多数都是:

Route::get();
Route::post();

真正耗时间的应该是这里了,如果你有一百条路由 你每一个动态的方法都要:

file

file
后面可能很多,你可以自己再去看看。后面还要拼接前缀,中间件之类的,

5年前 评论
Epona

缓存不只是file,还可以是Redis 或者 memcached 等,就比file要快了。

5年前 评论

先说说走缓存方法的:

你可以看看路由服务提供者的启动方法Illuminate\Foundation\Support\Providers\RouteServiceProvider::boot
缓存的路由直接把缓存文件读取过来

file

file

缓存文件大概长这个样

file

反序列化之后,这个路由类里已经存有所有定义好的路由

不走缓存的

而不是缓存的就走这里:

file

file

file

file

因为不存在这个方法:

file

然后调用 group 方法

file

file

因为前面传入的是路由文件名,就直接 require 了。

file

而我们的 web.php 又做什么呢,这个每个都都不同。大多数都是:

Route::get();
Route::post();

真正耗时间的应该是这里了,如果你有一百条路由 你每一个动态的方法都要:

file

file
后面可能很多,你可以自己再去看看。后面还要拼接前缀,中间件之类的,

5年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!