【发布时间】:2016-05-19 06:11:27
【问题描述】:
我有一个 Symfony2 网站,我正在生产环境中进行测试。我继续并清除了它的缓存,因为我已经进行并且可能会进行更多修改,但是有一个小问题:
在清除缓存时说,之后我想预热它,访问该网站的人会重建缓存。当缓存正在构建时,这会产生一个小问题,但不是完全,而其中一半被删除,因为删除仍在进行中。
之后发生的事情是,缓存已构建,但只是其中的一部分。 Symfony 认为缓存是完全构建的,并且在不再尝试构建它的情况下运行,但它运行在半构建的缓存上。删除过程有点长(约 15 秒),因此在此时间段内,任何人都不得尝试通过访问网站来创建缓存。
无论是这样,还是缓存完全构建,它都会覆盖旧缓存,系统会将这些新文件视为旧文件,删除其中的一部分,而其他一些则保留。不完全确定,我不确定如何检查。
例如,我得到的错误之一是
The directory "D:\xampp\htdocs\med-app\app\app\cache\dev/jms_diextra/metadata" does not exist.
如果我不使用该捆绑包,我会从 Doctrine 得到另一个缓存问题。这出现在每次访问网站时,直到我再次删除缓存而没有任何人访问该网站。它完全阻止访问该网站并使其无法正常工作。
另外,热身呢?这也需要一段时间。如果有人在缓存正在预热时访问该网站怎么办?这不会也造成冲突吗?
如何处理这个问题?我是否需要关闭 apache 服务,清除和暖缓存,然后重新启动 apache?生产中的网站如何处理?
编辑
我发现了一些有趣的东西。当我删除 cache/prod 文件夹时会出现该错误。如果我删除文件夹的内容而不删除文件夹本身,似乎该错误不会发生。我想知道为什么。
【问题讨论】:
-
我更喜欢使用 'sudo rm -rf app/cache/*' 删除缓存,我认为您可以减少所需的时间
-
当您手动清除缓存时,刷新也需要手动完成,否则请参考@johnSmith cmets 使其在更短的时间内自动刷新或完全禁用它。
-
我不能像在带有 xampp 的 Windows 上那样使用 'rm'。
-
另外,如果网站还在运行时仍然有人进入该网站会怎样?它不会也出错吗?我不相信它纯粹是即时的,尽管它比另一个更快。
-
手动创建丢失的目录,问题解决了吗?