Как не кэшировать динамические маршруты в symfony?

Пользователь

от rodger.botsford , в категории: PHP , 2 года назад

Как не кэшировать динамические маршруты в symfony?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от kyleigh_runte , 2 года назад

@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