Symfony2でESIを動作させる手順
自分でも毎回分からなくなるのでメモ・・・。
Actionでは、レスポンスにsetSharedMaxAge()とsetPublic()をセット
<?php $response = $this->render('HelloBundle:Hello:index.html.twig', array('rand'=>rand())); $response->setSharedMaxAge('10'); $response->setPublic(); return $response;
テンプレートでは、standaloneをtrueに
{% render "HelloBundle:Hello:news" with {}, {'standalone': true} %}
config.ymlでESIを有効に
app.config: esi: enabled: true
routing.ymlでESI用の_internalルーティングを有効に
_internal: resource: @FrameworkBundle/Resources/config/routing/internal.xml prefix: /_internal
ハマるポイントとしては、アクションでレスポンスをsetPublic()しないといけないところでしょうか。これがないとサーバー側でのページキャッシュが有効になりません。