【问题标题】:Twig : auto_reload option in production recommended?Twig:推荐生产中的 auto_reload 选项?
【发布时间】:2016-04-20 02:25:25
【问题描述】:

auto_reload 选项为 true 时,表示当模板文件被修改时,Twig 会重新编译文件,然后渲染内容。

问题:在生产环境中是否推荐将 auto_reload 选项设置为 true?

在我看来,它应该在生产中设置为 true,因为如果我使用 GIT 并且我的 twig 模板文件之一有新的更改,然后我使用“git pull”更新我的生产代码,我不必清除不再缓存,Twig 会自动检测到此模板文件已更改,需要重新编译。因此,在渲染模板文件时,它将使用最新的更改进行渲染。

有人会同意我的观点吗?如果没有,那你会推荐什么?

【问题讨论】:

    标签: twig template-engine recompile


    【解决方案1】:

    我不同意你的观点 :) auto_reload 在生产中应该设置为 false。此外,我不建议使用git pull 来实时更新生产代码。

    我建议您设置一个对您的代码更安全的部署机制。这可以像脚本控制台一样简单,也可以基于 CapistranoDeployer 等工具。

    【讨论】:

    • 你能说明你的原因吗...我告诉了我为什么它应该设置为真。你能反驳吗。谢谢
    • 是的。原因是,将“git pull”作为部署新版本的一种方法是非常危险的。这就是为什么建议您使用专业工具来做到这一点。然后,当您以“正确的方式”部署应用程序时,您将发现没有必要处理此选项。生产中的代码(和模板)永远不应该改变。如果需要更改,只需部署一个新版本(但使用工具来部署!)。
    • 好的,我明白你的意思。但其他人说使用 git 是一个好习惯:security.stackexchange.com/questions/45452/…。我用谷歌搜索了它,人们说在生产中使用 git 没有错。所以我的问题仍然没有得到回答。希望有人能清楚地回答我的问题。
    【解决方案2】:

    我知道这是一个老问题,但如果有人偶然发现它,也许更广泛的答案会很有用。
    从技术上讲,没有什么可以阻止您在生产中使用 auto_reload = true,但有一件事:性能。事实是,无论您是否喜欢使用任何模板引擎(PHP 本身除外,因为它就是这样设计的)都会导致性能损失。是的,这可能看起来很小,但是如果您每秒处理数千个请求 - 它们都会加起来。
    当您还添加验证并因此重新编译缓存文件(实际上是 PHP 代码)时,您将进一步降低性能。同样,它本身是次要的,但它可以很快加起来。所以,哈维尔说得对,你应该在 PROD 上使用false,但他的推理是错误的。
    或者也许只是“不完全正确”。 GIT 完全可以部署,但前提是您要记住,它并不是真正的部署工具,而是版本控制系统 (VCS)。在简化的情况下,您至少将拥有不同的配置文件,例如,包含数据库连接的详细信息。好吧,出于安全原因,您应该有不同的。并且配置文件不应转到 VCS,因此如果您仅依赖 GIT,它们将被排除在您的部署之外。
    这是一个非常简单的案例,但您可以使用更复杂的案例,例如需要编译的东西(TypeScript、SASS/LESS、JS/CSS 缩小可能是其中最简单的)或者只是数据库更新,您根本无法做到通过 GIT 服务。如果您确实有类似的东西 - 您需要考虑与 GIT 不同的东西。
    哦,你也可以只把你的开发产生的缓存文件GIT,但这需要你首先在测试环境中生成适当的页面,以便它们被更新。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多