我们有一个基于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