@rodger.botsford
В Symfony динамические маршруты могут быть не кэшированы, просто установив опцию cache-control в no-cache или private для соответствующих маршрутов. Это может быть сделано используя аннотации @Route или метод setDefault в классе Route.
Например, чтобы установить cache-control в no-cache для маршрута в аннотации @Route, можно использовать следующий код:
1 2 3 4 5 6 7 |
/**
* @Route("/my/dynamic/route", name="my_dynamic_route", options={"cache_control"="no-cache"})
*/
public function myDynamicRouteAction()
{
// code
}
|
Или, используя метод setDefault в классе Route:
1 2 3 4 5 6 7 |
use SymfonyComponentRoutingRoute;
$route = new Route('/my/dynamic/route');
$route->setDefault('_controller', 'AppBundle:MyController:myDynamicRouteAction');
$route->setOption('cache_control', 'no-cache');
$collection->add('my_dynamic_route', $route);
|
Также, можно включить кэширование для статических маршрутов, а динамические маршруты можно отключить из кэширования, указав их параметры в файле конфигурации в разделе framework:
1 2 3 4 5 6 7 8 9 10 |
framework:
router:
strict_requirements: true
resource: '%kernel.project_dir%/config/routes.yaml'
type: yaml
options:
cache_dir: '%kernel.cache_dir%/routes'
# Only cache static routes
generator_class: SymfonyComponentRoutingGeneratorUrlGenerator
generator_base_class: SymfonyComponentRoutingGeneratorLazilyGeneratedUrlGenerator
|