Пошук маршрутів з бази даних: Symfony CMF DynamicRouter
Дата оновлення перекладу 2023-09-26
Пошук маршрутів з бази даних: Symfony CMF DynamicRouter
Основна система маршрутизації Symfony чудово справляється зі складними наборами маршрутів. Високооптимізований кеш маршрутизації скидається під час розгортання.
Однак, при роботі з великою кількістю даних, кожний з яких вимагає гарного читаного URL (наприклад, з ціллю оптимізації пошукової системи), маршрутизація може втратити швидкість. На додаток до цього, якщо маршрути повинні бути змінені користувачами, кеш маршрутів повинен буде часто перебудовуватися.
Для таких випадків, DynamicRouter
пропонує альтернативний метод:
- Маршрути зберігаються у базах даних;
- В полі шляху існує каталог (індекс) бази даних, і пошук масштабується до величезних чисел різних маршрутів;
- Записи впливають лише на каталог бази даних, що дуже ефективно.
Коли всі маршрути відомі під час розгортання, і їх кількість не дуже велика,
використання користувацького завантажувача маршрутів
є більш бажаним способом додавання нових маршрутів. При роботі лише з одним
типом обʼєктів, параметр slug в обʼєкті та анотації @ParamConverter
чудово
працюють (дивіться FrameworkExtraBundle) .
DynamicRouter
корисний тоді, коли вам потрібно, щоб обʼєкти Route
мали повний набір функцій Symfony. Кожний маршрут може визначати конкретний
контролер, щоб ви могли відділяти структуру URL від логіки вашого додаткук.
DynamicRouter має вбудовану підтримку Doctrine ORM і Doctrine PHPCR-ODM, але
надає ContentRepositoryInterface
для написання користувацького завантажувача,
наприклад, для іншого типу бази даних або REST API чи чогось ще.
DynamicRouter пояснюється у Документації Symfony CMF.