"./bin/console cache:clear --env=prod" 和 "rm -rf var/cache/prod/*" 之间有什么区别?控制台命令非常缓慢,而 Bash 命令很快。那么,为什么要使用 "cache:clear" 而不是 "rm" 呢?请注意,两者的意思不能改变。
cache:clear
命令会清除之前创建的缓存条目,但也会进行缓存预热。因此,应用程序在加载时会很快,因为缓存已经被预填充。
另一方面,rm -rf
只完成了其中一部分任务。在执行该命令后,第一次加载应用程序时可能会出现性能影响。
我还想指出另一件事:权限。例如,如果您以 root
用户身份登录,并且没有通过 setfacl
(或任何其他方法)设置访问权限,则 cache:clear
很可能会创建属于 root
的缓存条目。这可能会在未来引起问题。
希望这有点帮助...
"cache:clear"命令不仅会删除缓存,还会构建更新的缓存数据(预热),因此Symfony在第一次请求到来之前不必创建缓存,这就是它比使用"rm -rf"仅仅删除缓存文件需要更多时间的原因。即使您可以更快地完成该命令,如果您没有通过此命令预先创建缓存,那么处理第一个请求也会花费时间。
"http://symfony.com/doc/current/console/usage.html
因此,在部署的整个过程中,通常最好运行cache:clear。 通常情况下,您会使用rm命令的场合只有在某些文件权限出现问题时(例如,可能您以错误的用户身份运行了命令),且已经没有其他选择。
你最好使用“官方”的最佳方法,即使用cache:clear
而不是使用rm
...遵循最佳实践,这里几乎包含所有命令:
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
rm
和其中任何一个命令之间的区别? - Nico Haasecache: clear
命令来清除缓存,而不是使用 rm
命令。就这样。 - Mostafa
php app/console blahblah
,php app/console make coffee
,php app/console make my dreams come true
,但是"官方"最佳方法应该是:php app/console doctrine:cache:clear-metadata && php app/console doctrine:cache:clear-query && php app/console doctrine:cache:clear-result
。不要相信别人说的话。我曾经使用过Apache作为反向代理,然后使用了Varnish和Nginx,并且我从Symfony 2.3升级到了现在的3版本,但它从来没有正常工作过。从未。实际有效的解决方案是什么?请看我下一个评论。 - Olivier Ponsrm -rf ./app/cache/dev/*; rm -rf ./app/cache/prod/*
,然后重新启动您的Web服务器,无论它是什么,以清空缓存。这是唯一有效的方法。不是最好的,也不是“遵循最佳实践,相信圣诞老人,相信完美”,但它确实起作用。我已经清除了我的缓存,而且它有效。我对“只使用php app/console
”的炒作感到非常厌倦。如果您使用Windows,您总会以这种方式结束,这是一个四岁Symfony用户的建议。 - Olivier Ponsrm -rf
完美运行的说法。唯一的问题是无法删除正在使用的某些文件,我通过多次运行该命令来解决这个问题。 - E Ciotti