10

prod モードで twig キャッシュを無効にするか、強制的にビューを再コンパイルしようとしています。

KnapLaps SnappyBundle を使用していくつかの PDF を生成しています (DomPDF でも同じ問題が発生します)。レンダリングする動的コンテンツがあります。

開発モードでは、一部のテキストや一部の css プロパティを変更できます。変更はすぐに有効になります。

しかし、prod モードでは、変更を確認するために cache:clear または rm -rf app/cache/prod/twig/* を実行する必要があります。

Twigセクションのconfig.ymlで次のオプションを試しました(同時にではありません)

cache: "/dev/null"
cache: false
auto-reload: ~

また、pdf を生成および再読み込みするときに、ヘッダーを使用していくつかのことを試します。

$html = $this->renderView("xxxxPdfBundle:Pdf:test.html.twig", array("foo" => $bar));
return new Response(
    $this->get('knp_snappy.pdf')->getOutputFromHtml($html),
    200,
    array(
        'Cache-Control'         => 'no-cache, must-revalidate, post-check=0, pre-check=0',
        'Content-Type'          => 'application/pdf',
        'Content-Disposition'   => 'attachment; filename='.$file
    )
);

小枝を強制的に再コンパイルする方法やアプリ/キャッシュを使用しない方法がわかりません.pdfのコンテンツは本番環境では動的になるためです。

コメントからの情報更新:

動的テンプレート変数でさえ更新されていないことに気付いたので、同じ PDF が本番環境で何度も生成されましたが、開発環境では生成されませんでした。

すべてのキャッシュを再度クリアした後、その問題は修正されました。設計どおりの動的コンテンツで PDF が生成されるようになりました。

それでも、疑問が残ります: 私の Web サイトが本番環境にあるときに、pdf テンプレート内の CSS スタイルを変更することにした場合はどうなるでしょうか? CSS はテンプレート変数ではないので、強制的にキャッシュを空にすることはできません :/

4

2 に答える 2

21

Twig のキャッシュ メカニズムを無効にする正しい方法は、cache環境パラメーターをfalseキャッシュ ディレクトリではなく に設定することです。

# config_dev.yml
# ...
twig:
    cache: false

参考文献:

Twig 環境オプション

TwigBundle の設定

于 2014-07-08T09:23:36.923 に答える