Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 什么是;“刷新缓存”;你是说在Magento? 以下是我在调查Magento中的缓存行为后发现的内容。 我不确定这一点,并要求更正。_Php_Magento_Caching_Redis_Enterprise - Fatal编程技术网

Php 什么是;“刷新缓存”;你是说在Magento? 以下是我在调查Magento中的缓存行为后发现的内容。 我不确定这一点,并要求更正。

Php 什么是;“刷新缓存”;你是说在Magento? 以下是我在调查Magento中的缓存行为后发现的内容。 我不确定这一点,并要求更正。,php,magento,caching,redis,enterprise,Php,Magento,Caching,Redis,Enterprise,当修改类似于产品的内容时,缓存条目(如“HTML块”)将变为“无效”,从而导致被忽略而不在前端使用。这是有道理的,因为这些数据现在已经过时了 在通过管理区域手动“刷新”之前,它将保持“无效” 手动“刷新”后,缓存块的第一个呈现将构造其缓存副本并将其附加到此HTML块缓存保留中。该块的后续渲染操作将发现该缓存可用,并最终使用它,直到缓存再次变为“无效” 为什么这个过程被称为“刷新”,因为它应该类似于“重置”?因为“刷新”意味着它将生成更新的缓存快照,但它只允许构造缓存条目 为什么失效数据在失效后不

当修改类似于产品的内容时,缓存条目(如“HTML块”)将变为“无效”,从而导致被忽略而不在前端使用。这是有道理的,因为这些数据现在已经过时了

在通过管理区域手动“刷新”之前,它将保持“无效”

手动“刷新”后,缓存块的第一个呈现将构造其缓存副本并将其附加到此HTML块缓存保留中。该块的后续渲染操作将发现该缓存可用,并最终使用它,直到缓存再次变为“无效”

为什么这个过程被称为“刷新”,因为它应该类似于“重置”?因为“刷新”意味着它将生成更新的缓存快照,但它只允许构造缓存条目

为什么失效数据在失效后不被刷新


这让我质疑我的结论,我是否正确?

默认情况下修改对用户重要的数据时,应进行Magento缓存刷新。例如订单数据、装运信息等

这是我在为软件编写扩展时观察到的行为。您可以手动禁用此行为,但默认情况下,动态数据应该在缓存中穿孔

为什么这个过程被称为“刷新”,因为它应该像“重置”

您对此的一般看法是正确的——有些人称之为“刷新”,因为尽管您采取的操作会重置缓存,但在正常工作的Magento系统中,在您(或其他用户)下次加载页面时,缓存几乎会立即自行重建

为什么失效数据在失效后不被刷新

当缓存失效时,这意味着开发人员在处理使缓存失效的后端功能时足够聪明,知道他们的操作需要缓存刷新,但编程缓存控制不足以只刷新他们更改的缓存部分


例如,某些块可能会导致产品价格发生变化,这意味着任何缓存了价格的块都需要刷新。但是,作为后端程序员,无法知道哪些块需要失效,也无法知道它们存储在哪个缓存系统(块缓存、FPC、varnish)中。还有一个商店性能的问题——如果您正在编辑100个产品,是否希望Magento在高峰流量时重建缓存100次?因此,开发人员没有决定如何处理所有这些,而是将缓存标记为无效。这允许缓存系统采取它认为必要的任何操作


在一个完美的理论缓存系统中,会有自动运行的进程来检测失效的缓存,并知道该做什么以及何时刷新它。这是一个需要实施和维护的复杂系统,因此Magento选择了简单地通知店主缓存失效,让他们采取他们认为合适的任何行动。

我投票决定将这个问题作为离题题来结束,因为它不是关于编程的。@Madbreaks——缓存失效完全是关于编程的。@AlanStorm是的,但是这个问题是关于语义的,不是关于缓存失效,而是关于语义背后的编程逻辑。误导性术语可能会导致编程混乱。当我问“为什么失效数据在失效后不会被刷新?”时,这与语义无关。“如果要编辑100个产品,是否希望Magento重建缓存100次”。。。缓存是在渲染块时动态构建的,因此它只是在单个查询中保存输出的过程。只有当缓存未失效时才会发生这种情况。@rahmanisback,但请首先考虑块被缓存的原因——因为块渲染时需要太长时间和/或过度利用系统资源(RAM等)。突然强制按不同的时间表重建通常缓存一段时间的任何内容可能会产生意外的后果。您不必同意实现,但这就是它背后的思想。