Интересно, есть ли проблемы с производительностью в отношении динамической загрузки маршрутов через базу данных.Ошибка производительности динамической маршрутизации Laravel
В 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
, он будет вызывать ModelFactory, что создает экземпляр класса RoutingModel
. После создания экземпляра он подключится к API через метод getRoutes()
, который вернет результат маршрута.
Оттуда он построит базу Route::resource
на возвращенном $route['url']
, который будет использовать DynamicController
.
Имея эту структуру, будет ли какая-либо проблема с производительностью в отношении маршрутизации или загрузки веб-приложения? Я спрашиваю об этом, потому что я замечаю, что мое веб-приложение, похоже, загружается очень медленно, около 10-18 секунд загрузки страницы.
Недавно я обновился от Codeigniter до Laravel 5.2 и заметьте резкую проблему с производительностью при переключении на Laravel. Когда я раньше использовал Codeigniter, страница загружается всего через 2-4 секунды. Обратите внимание на огромную разницу.
Одинаковая логика, просто перепишите код базы по стандартам Laravel.
Codeigniter быстрее, чем laravel –
Я никогда не видел что-то подобное в Laravel. Обычно маршруты статичны и затем кэшируются через механизм кэширования маршрута. Кроме того, попробуйте Lumen, у которого есть более быстрый маршрутизатор. –
Попробуйте использовать кэширование маршрутов (я не знаю, будет ли это работать для вашего примера), но если это произойдет, не забудьте повторно кэшировать свои маршруты каждый раз, когда вы создаете новый '' php artisan route: cache'' – ahmad