Laravel 4大路径计数会增加启动时间

时间:2014-10-15 16:04:19

标签: php laravel laravel-4 laravel-routing

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

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

有没有人在使用多条路线的大规模应用程序中遇到这样的问题?如何解决它而没有让Laravel完成所有这些并在启动过程中映射它们?

1 个答案:

答案 0 :(得分:3)

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

$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