在Symfony中清除缓存:`cache:clear`或`rm -rf`?

时间:2016-10-27 09:46:20

标签: symfony

./bin/console cache:clear --env=prodrm -rf var/cache/prod/*之间的区别是什么?控制台命令很慢。 Bash命令很快。那么,......为什么要使用cache:clear代替rm

3 个答案:

答案 0 :(得分:20)

cache:clear擦除以前创建的缓存项,但,它会执行缓存预热。在此之后,由于缓存已经预先填充,因此应用程序应该加载非常快。

另一方面,rm -rf只完成工作的一部分。在此之后第一次尝试加载应用时,您会注意到性能影响。

我还想指出另一件事:权限。例如,如果您以root身份登录,并且未通过setfacl(或任何其他方法)设置访问权限,cache:clear很可能会创建{{1}所拥有的缓存项目1}}。这可能是一个问题,在线下。

希望这有点帮助...

答案 1 :(得分:8)

“cache:clear”命令不仅会删除缓存,而且通常会构建更新的缓存数据(预热),这样symfony就不必在第一个请求到来之后创建一个,这就是需要更多时间的原因而不仅仅是通过“rm -rf”删除缓存文件夹下的文件。 即使您可以更快地完成该命令,如果您没有事先通过此命令创建缓存,则需要时间来处理第一个请求。

http://symfony.com/doc/current/console/usage.html

因此,通常最好运行cache:clear,至少在整个部署过程中。 您使用rm命令的情况通常只有在某些文件权限出错时(即,您可能运行了错误用户的命令)并且没有剩下的选择,我认为。

答案 2 :(得分:0)

几乎所有命令:

  cache:clear                             Clears the cache
  cache:pool:clear                        Clears cache pools
  cache:warmup                            Warms up an empty cache
  doctrine:cache:clear-collection-region  Clear a second-level cache collection region.
  doctrine:cache:clear-entity-region      Clear a second-level cache entity region.
  doctrine:cache:clear-metadata           Clears all metadata cache for an entity manager
  doctrine:cache:clear-query              Clears all query cache for an entity manager
  doctrine:cache:clear-query-region       Clear a second-level cache query region.
  doctrine:cache:clear-result             Clears result cache for an entity manager