清除缓存后的预热是什么?

10

可以有人用新手易懂的语言解释一下清除缓存后如何进行缓存预热的含义吗?

Symfony2 中提供了一个清除缓存的命令:

php app/console cache:clear

有时在安装一些软件包时,安装程序尝试清除缓存,但失败后,会抛出以下警告:

无法使用 --warmup 清除缓存。

为什么要在软件包安装后热身缓存?您的通常解释非常宝贵。

2个回答

22

缓存热身是为您的应用程序生成新的缓存。因此,当用户请求打开应用程序的页面时,它可以从已生成的缓存中读取数据并返回。

缓存清理字面意思是清除旧的缓存。如果进行了缓存清理而没有进行热身,当新的请求到来时,应用程序将执行检索数据和生成新缓存所需的所有工作,然后返回结果。如果在此之前已经热身了缓存,那么它将直接返回,因此响应速度会更快。

安装新的bundle时,您需要安装一个新的bundle以在您的应用程序中使用它。因此,您需要对源代码进行更改,例如将该bundle注册为服务,从控制器调用该服务等。但是,先前生成的缓存不知道这些更改。因此,应该清理缓存并再次生成(热身)以考虑这些更改。我想这不是一个深入的答案,但尝试用简单的方式解释。


那确实是我在 OP 时间正在寻找的。谢谢。 - Adib Aroui
这样解释更好 :) - felipsmartins
这意味着如果使用预热,我就不需要使用cache:clear了吗?如果是这样,那么我应该总是使用预热吗?至少在生产环境中是这样的。 - jcarlosweb

7
目的是初始化应用程序需要的任何缓存,并防止第一个用户在动态生成缓存时出现任何重大的“缓存命中”。
来自http://symfony.com/doc/current/reference/dic_tags.html#kernel-cache-warmer 现实世界的例子:您提供一些需要缓存的统计信息,因此可以编写自己的服务,该服务将被调用到kernel.cache_warmer事件上以执行此任务“静态地”。

5
抱歉,你的答案是正确的且指向正确的文档,但这些术语可能对新手不太友好。请编辑一下,让我们初学者能够简单理解这个缓存是指我们经常听到的众多“缓存”中的哪一个。有更简单的链接吗?感谢您的时间和理解。 - Adib Aroui

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接