我们有一个基于Laravel 4(目前为4.2)的大型Web应用程序,我们遇到了一些问题。每个页面加载大约需要900毫秒来启动Laravel。我们做了一些调查,发现它是由我们的应用程序中的大量路由计数引起的 - 当我启动php artisan routes
时,我们有一个大约1200-1500条路由的列表所以我的猜测是因为长的加载时间是由于这个事实,在启动过程中,Laravel将遍历所有这些路线并映射它们......我还试图删除所有路线并拥有一条测试路线,然后应用程序正常启动 - 大约100-150ms应该......
我们将路由分布在多个工作台包中的多个控制器之间以及/app/routes.php中。我们正在使用RESTful和普通控制器。
有没有人在使用多条路线的大规模应用程序中遇到这样的问题?如何解决它而没有让Laravel完成所有这些并在启动过程中映射它们?
答案 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