@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 |