在 joomla 的全局配置中,有 2 个缓存是保守的和渐进的,两者有什么区别?
3 回答
保守缓存是标准的缓存类型。以下是它的工作原理:
访问者访问您网站上的页面。
Joomla 检查其缓存目录中是否有该页面的未过期版本。
- 如果缓存页面存在(并且没有过期),那么 Joomla 会将其提供给访问者——否则,将创建页面的缓存版本,并且该缓存版本将提供给访问者以及所有其他后续访问者,只要它(“它”是指页面)没有过期。
上述场景很典型,也是大多数开发人员实现缓存的方式。
渐进式缓存的工作方式如下:
访问者访问您网站上的页面。
Joomla 检查该访问者是否存在该页面的缓存版本并且它尚未过期。
如果该缓存页面存在,那么它将提供给访问者,否则,Joomla 将为该特定访问者创建缓存页面,然后将其提供给他。
如果另一个访问者(从未访问过该页面)访问该页面,则 Joomla 将不会提供前一个访问者的缓存页面,而是会
专门为该用户创建该页面的缓存版本,然后将其提供给他。如您所见,渐进式缓存仅在同一访问者在页面缓存版本的生命周期内访问同一页面时才提供性能改进。在大多数情况下,渐进式缓存会导致比禁用缓存更糟糕的性能损失,因为几乎每次访问,Joomla 都必须处理请求,创建页面的缓存版本,然后将页面提供给访问者(而不仅仅是在禁用缓存的情况下处理请求并提供页面)。哦,别忘了 Joomla 生成的所有缓存文件——如果你有一个高流量的新闻网站(有很多页面),你只能想象你的缓存文件夹中有多少这些文件。
现在您可能想知道,渐进式缓存在哪些情况下有用?好吧,假设您有一个视频网站(类似于 youtube)。您希望根据每个访问者的位置和/或浏览器设置和/或安装的插件显示他的自定义页面。因此,对于访问者加载的每个页面,您都可以使用此信息生成该页面的自定义版本并将其缓存。如果访问者再次访问同一页面,则 Joomla 不需要重做工作来生成自定义页面。
当然,渐进式缓存在很多场景下确实有用,但我们认为,只有在网站接收到大量访问者并且这些访问者主要是重复访问者时,才应考虑渐进式缓存。在其他情况下使用它会对网站的性能造成重大影响。
从这里提取。
渐进式缓存的工作方式与保守式缓存类似,不同之处在于缓冲区是渐进式更新的。
如果您查看 JApplicationCMS 中的渲染功能(其中设置了渐进式缓存),您会发现它不适用于已登录的用户。 https://github.com/joomla/joomla-cms/blob/staging/libraries/cms/application/cms.php
if ($this->isSite() && $this->get('caching') && $this->get('caching', 2) == 2 && !JFactory::getUser()->get('id'))
{
$caching = true;
}
此外,如果您跨浏览器或 ips 转储同一页面的缓存 ID,您将获得相同的缓存 ID。
渐进式缓存的典型工作发生在 JCache 的 getWorkarounds 和 setWorkarounds 中。但是请注意,cbuffers 有时会变得非常大,从而导致问题。