2015-06-03 3 views
2

У меня есть контроллер, действие которого вынесено в веточку сSymfony2: ESI setMaxAge Cache

{{ render_esi(controller('MyWebsiteBundle:Element:header')) }}

само действие выглядит следующим образом:

/** 
    * @return Response 
    */ 
    public function headerAction() 
    { 
     $currentLocale = $this->getCurrentLocale(); 

     $response = $this->render('MyWebsiteBundle:Element:header.html.twig', array(
      'currentLocale' => $currentLocale, 
      'myTime' => time() 
     )); 
     $response->setPublic(); 
     $response->setSharedMaxAge(3600); 

     return $response; 
    } 

Когда я перезагрузить свой браузер, "myTime" меняется каждый раз.

Как использовать setShardeMaxAge(), чтобы Twig был только renderd после истечения MaxAge?

+0

Используете ли вы 'app_dev.php' или' app.php' для доступа к странице? – nifr

+0

На данный момент я использую app_dev.php – Zwen2012

+0

Вы включили внутренний кеширующий прокси-сервер symfony 'AppCache' в свой' app_dev.php' ([howto?] (Http://symfony.com/doc/current/book/http_cache.html # symfony-reverse-proxy))? – nifr

ответ

4

В Symfony2 есть несколько вещей, которые вам нужно сделать, чтобы активировать кеширование esi.

1) В app/config/config.yml убедитесь, что вы активировали esi, с фрагментом пути.

framework: 
    esi: { enabled: true } 
    fragments: { path: /_proxy } 

2) Заверните ядро ​​с объектом AppCache

// web/app.php 
$kernel = new AppCache($kernel); 

3) настройкой конфигурации AppCache

// app/AppCache.php 
use Symfony\Bundle\FrameworkBundle\HttpCache\HttpCache; 

class AppCache extends HttpCache 
{ 
    protected function getOptions() 
    { 
     return array(
      'debug'     => false, 
      'default_ttl'   => 0, 
      'private_headers'  => array('Authorization', 'Cookie'), 
      'allow_reload'   => false, 
      'allow_revalidate'  => false, 
      'stale_while_revalidate' => 2, 
      'stale_if_error'   => 60, 
     ); 
    } 
} 

О вашей проблеме, если он кэширует ваш ответ и единственной проблемой заключается в том, что он перезагружается при каждом обновлении страницы. убедитесь, что для свойства конфигурации allow_reload установлено значение false.

Вы можете прочитать об этом здесь: http://symfony.com/doc/current/book/http_cache.html

 Смежные вопросы

  • Нет связанных вопросов^_^