我正在尝试在 prod 模式下禁用树枝缓存,或者强制它重新编译我的视图。
我正在使用 KnapLaps SnappyBundle 生成一些 PDF(DomPDF 出现同样的问题),并且我有动态内容要呈现。
在开发模式下,我可以修改一些文本,甚至是一些 css 属性,这些更改会立即生效。
但在 prod 模式下,我需要缓存:清除或 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
)
);
我不知道如何强制 twig 重新编译或不使用应用程序/缓存,因为显然 pdf 内容在生产时将是动态的。
来自评论的信息更新:
我意识到即使是动态模板变量也没有更新,因此在生产中一遍又一遍地生成相同的 PDF,但在开发中却没有。
再次清除所有缓存后,该问题已得到修复:现在生成的 PDF 具有设计的动态内容。
尽管如此,一个问题仍然存在:如果我的网站在生产中,我决定更改 pdf 模板中的 CSS 样式怎么办?CSS 不是模板变量,我不能强迫人们清空缓存:/