2012-10-05 56 views
24

在Joomla的Global Config中有2个缓存是保守的和渐进的,两者有什么区别?joomla 2.5中保守缓存和渐进缓存有什么区别?

+3

这里是关于Joomla中全局配置缓存的不错文章。点击下面的链接来查看。 http://www.inmotionhosting.com/support/edu/joomla-25/caching/global-module-caching – Toretto

+0

这说明它更好,更快 - http://www.itoctopus.com/why-progressive-caching-in在大多数情况下,应避免使用joomla,但上面的文章通过实验备份了答案。如果你有时间阅读两个,如果你需要一个快速,很好的答案,请阅读这一个:) – pathfinder

回答

11

对于每个访客唯一缓存

  • 保守缓存显示所有的游客到您的网站完全相同的缓存内容。

  • 渐进式高速缓存但是会为每个用户唯一地缓存内容。

由@龙卷风的评论

30

保守缓存倘若link是标准型缓存。以下是它的工作原理:

  • 访问者访问您网站上的页面。

  • Joomla检查其缓存目录中是否存在该页面的非过期版本。

  • 如果缓存页面存在(并且没有过期),那么Joomla会将其提供给访问者 - 否则,创建页面的缓存版本,并且该缓存版本将被提供给访问者,并且每个其他随之而来的访问者,只要它(通过“它”我们指的是页面)没有过期。

上面的场景是典型的,大多数开发人员如何实现 缓存。

渐进式缓存工作方式如下:

  • 访问者访问您网站上的网页。

  • Joomla检查该页面的缓存版本是否存在,并且该页面尚未过期。

  • 如果该缓存页面存在,那么它将被提供给访问者,否则,Joomla将为该特定访问者创建缓存页面,然后将其提供给他。

  • 如果一位来访者(谁从未在该网页)访问该页面,那么的Joomla将不会为缓存的页面之前的访客,相反,它会创建一个页面的缓存版本
    专为用户,然后将其提供给他。

正如你可以看到,如果同一访问者访问 一生的页面的缓存版本在同一页面渐进式缓存仅提供了一套性能 改善。在大多数情况下, 渐进式缓存会导致巨大的性能下降,远远低于禁用缓存的 ,这是因为几乎每次访问都需要Joomla处理请求,创建 页面的缓存版本,然后服务于页面发送给访问者(而不是仅在 处理请求并在禁用缓存的 的情况下为页面提供服务)。哦,并且不要忘记Joomla生成的所有缓存文件 - 如果你有一个高流量的新闻网站 (它有很多页面),你只能想象这些文件中有多少你 将在你的缓存文件夹中。

现在你可能会想知道,在哪种情况下渐进式缓存 有用?那么,想象你有一个视频网站(类似于 youtube)。您希望根据他的位置和/或浏览器设置和/或插件安装,显示每个访客自定义页面。因此,对于访问者加载的每个页面 ,可以使用此信息生成该页面的定制版本并将其缓存。如果 访问者再次访问同一页面,则Joomla不需要重做 工作来生成自定义页面。

当然,也有许多情况下其下渐进式缓存是 真正有用的,但在我们看来,渐进式缓存只应 如果网站收到许多游客认为,如果这些游客 大多是回头客。在其他情况下使用它会导致网站性能的重大影响。

here中提取。

+1

我不能更强调“性能打击”渐进式缓存!我有一个很多返回用户的繁忙网站,并认为渐进式缓存将是您的选择。但它最终窒息了我的网站。服务器RAM使用率增加,CPU使用率增加,页面启动需要1分钟才能加载!发生了恶梦。一旦我禁用缓存,页面在3秒内加载。从那以后,我从不使用缓存,只为会话处理程序使用memcache! – Neel

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; 
    } 

而且,如果你转储缓存ID对在同一页的浏览器或IPS,你会得到相同的缓存ID的。

渐进式缓存的典型工作发生在JCache的getWorkarounds和setWorkarounds中。但是要小心,cbuffers有时会变得笨重,有时会导致问题。

相关问题