在全局配置中,joomla有2个缓存是保守和渐进的,两者有什么区别?
答案 0 :(得分:30)
保守缓存是标准缓存类型。以下是它的工作原理:
访问者访问您网站上的网页。
Joomla检查其缓存目录中是否存在该页面的未过期版本。
- 如果缓存页面存在(并且它未过期),则Joomla会将其提供给访问者 - 否则,将创建页面的缓存版本,并且缓存版本将提供给访问者,并提供给其他人随后的访问者,只要它(由“它”表示页面)未过期。
上述情况很典型,是大多数开发人员的实施方式 缓存。
渐进式缓存的工作方式如下:
访问者访问您网站上的网页。
Joomla会检查该访问者是否存在该页面的缓存版本,但尚未过期。
如果该缓存页面存在,那么它将被提供给访问者,否则,Joomla将为该特定访问者创建缓存页面,然后将其提供给他。
如果其他访问者(从未访问该页面)访问该页面,则Joomla将不会提供上一个访问者的缓存页面,而是会创建该页面的缓存版本 专门针对该用户,然后将其提供给他。
如您所见,渐进式缓存仅提供性能 如果同一访问者访问同一页面内的改进 页面缓存版本的生命周期。在大多数情况下, 渐进式缓存导致了巨大的性能损失 更糟糕的是禁用缓存,因为几乎每次访问都是如此 Joomla必须处理请求,创建缓存版本 页面,然后将页面提供给访问者(而不仅仅是 处理请求并在场景中提供页面 缓存被禁用)。哦,不要忘记所有的缓存文件 由Joomla生成 - 你只能想象你有多少这些文件 如果您有一个高流量新闻网站,将在您的缓存文件夹中 (有很多页面)。
现在您可能想知道,在哪种情况下是渐进式缓存 有用?好吧,想象一下你有一个视频网站(类似于 YouTube)的。您希望根据他的显示每个访客自定义页面 安装的位置和/或浏览器设置和/或插件。因此对于 访问者加载的每个页面都使用此信息 生成该页面的自定义版本并进行缓存。如果 访问者再次访问同一页面,然后Joomla不需要重做 生成自定义页面的工作。
当然,渐进式缓存有很多场景 真的很有用,但在我们看来,渐进式缓存应该只是 如果网站收到许多访问者和那些访问者,则考虑 主要是重复访客。在其他情况下使用它会导致 网站的表现受到重创。
摘自here。
答案 1 :(得分:11)
答案 2 :(得分:1)
渐进式缓存就像保守缓存一样,不同之处在于缓冲区会逐步更新。
如果查看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有时会变得笨重,造成问题。