Laravel 动态路由性能问题
Laravel dynamic routing performance issue
我想知道通过数据库动态加载路由是否有任何性能问题。
在 routes.php
中,它将从数据库中检索值并从那里创建路由。
来自routes.php
:
buildDynamicRoutes(new App\Factory\ModelFactory('App\Models\RoutingModel'));
function buildDynamicRoutes($model)
{
$routes = $model->getInstance()->getRoutes(); // 'routes' is the table name wherein routes will be stored.
if (is_array($routes) && !empty($routes)) {
foreach ($routes as $route) {
Route::resource($route['url'], 'DynamicController');
}
}
}
所以基本上,在 buildDynamicRoutes
方法上,它将调用实例化 RoutingModel
class 的 ModelFactory。实例化后,它将通过 getRoutes()
方法连接到 API,该方法将 return 路由结果。
从那里,它将在 $route['url']
returned 的基础上构建 Route::resource
,它将使用 DynamicController
.
采用这种结构,在路由或加载网络应用程序方面是否会出现任何性能问题?我问这个是因为我注意到我的网络应用程序加载速度似乎很慢,页面加载大约需要 10-18 秒。
我最近从 Codeigniter 升级到 Laravel 5.2,并注意到在切换到 Laravel 后出现了严重的性能问题。当我以前使用 Codeigniter 时,页面加载仅需大约 2-4 秒。请注意它带来的巨大变化。
同样的逻辑,只是根据Laravel的标准重写代码。
试试这个,让我们知道进展如何。
$routes = Cache::has('routes')
? Cache::get('routes')
: $model->getInstance()->getRoutes();
if (!Cache::has('routes')) {
Cache::add('routes', $routes, 120);
}
替换为您的“$routes = $model->getInstance()->getRoutes()”赋值。也许您需要导入缓存:
use Illuminate\Support\Facades\Cache;
如果您的 $routes 值经常变化,您可以设置另一个缓存时间而不是 120 分钟。
我想知道通过数据库动态加载路由是否有任何性能问题。
在 routes.php
中,它将从数据库中检索值并从那里创建路由。
来自routes.php
:
buildDynamicRoutes(new App\Factory\ModelFactory('App\Models\RoutingModel'));
function buildDynamicRoutes($model)
{
$routes = $model->getInstance()->getRoutes(); // 'routes' is the table name wherein routes will be stored.
if (is_array($routes) && !empty($routes)) {
foreach ($routes as $route) {
Route::resource($route['url'], 'DynamicController');
}
}
}
所以基本上,在 buildDynamicRoutes
方法上,它将调用实例化 RoutingModel
class 的 ModelFactory。实例化后,它将通过 getRoutes()
方法连接到 API,该方法将 return 路由结果。
从那里,它将在 $route['url']
returned 的基础上构建 Route::resource
,它将使用 DynamicController
.
采用这种结构,在路由或加载网络应用程序方面是否会出现任何性能问题?我问这个是因为我注意到我的网络应用程序加载速度似乎很慢,页面加载大约需要 10-18 秒。
我最近从 Codeigniter 升级到 Laravel 5.2,并注意到在切换到 Laravel 后出现了严重的性能问题。当我以前使用 Codeigniter 时,页面加载仅需大约 2-4 秒。请注意它带来的巨大变化。
同样的逻辑,只是根据Laravel的标准重写代码。
试试这个,让我们知道进展如何。
$routes = Cache::has('routes')
? Cache::get('routes')
: $model->getInstance()->getRoutes();
if (!Cache::has('routes')) {
Cache::add('routes', $routes, 120);
}
替换为您的“$routes = $model->getInstance()->getRoutes()”赋值。也许您需要导入缓存:
use Illuminate\Support\Facades\Cache;
如果您的 $routes 值经常变化,您可以设置另一个缓存时间而不是 120 分钟。