Laravel 4大路由数增加了启动时间


Laravel 4 large Route count increases booting time

我们有一个基于Laravel 4(目前为4.2)构建的大型web应用程序,遇到了一些问题。每次页面加载大约需要900毫秒才能启动Laravel。我们做了一些调查,发现这是由我们的应用程序中的大量路由计数引起的-当我启动php artisan routes时,我们有一个大约1200-1500条路由的列表。所以我猜加载时间长是因为在引导过程中,Laravel会遍历所有这些路由并映射它们。。。我还试着删除所有这些,并有一个测试路线,然后应用程序正常启动——大约需要100-150毫秒。。。

我们在几个工作台包和/app/routes.php中的许多控制器之间分布了路由。我们使用RESTful和普通控制器。

有人对一个有很多路线的大规模应用程序有这样的问题吗?如何解决它,而不是让Laravel在引导过程中浏览所有这些并映射它们?

虽然维护起来比较困难,但您可以尝试根据第一个分段来分离路线:

$first = Request::segment(1);
if ($first === 'blog') {
    // add blog routes here
} elseif ($first === 'forum') {
    // add forum routes here
} 

但它将使其他路由对帮助者不可用,如URL::route('resource.action')。

你还需要知道你的routes.php中是否有任何慢代码,比如:

Route::resource('page', slowFunctionToDecideControllerName());

更新:Laravel 5有一个路由缓存系统https://mattstauffer.co/blog/laravel-5.0-route-caching