好吧,正如你们中的一些人所知,我一直在致力于改进Joomla! 1.6的缓存系统。到目前为止,我取得了一些有趣的进展,并想与你们分享一些关于它的快速提示...
3个“级别”的缓存
在这个分支中新增的想法是,提供一个比简单开关更细粒度的选择。现在,在全局配置中有3个选项。
- 禁用 - 禁用所有缓存
- 启用默认关闭
- 启用默认开启
现在核心中所有具有缓存选项的区域(在1.5中为是和否),都已被替换为3个选项,"开启、默认、关闭"。这将允许管理员选择最适合他/她的级别(全局启用并在不需要的地方禁用,或者全局禁用并在需要的地方启用)。
模块位置缓存
由于我们的模块参数中有一个缓存标志,因此可以轻松缓存整个模块位置(与Itemid和访问级别关联)。只有在所有模块都是可缓存的情况下,才会缓存整个位置。由于位置缓存使用“存储时验证”的缓存方法,如果一个位置被缓存,那么下面所有的模块/模块参数甚至不需要加载!这将在启用缓存时将加载时间再减少大约5到10%(基于初步测试)。
推进缓存插件
在1.5版本中,我们得到了这个漂亮的缓存插件,它可以为我们缓存整个页面。虽然它确实可以加快网站速度,但也有一些限制。其中之一是您无法禁用特定页面/菜单项的页面缓存。这基本上让您只能选择“全开或全关”的方法。我所做的一个变通方法是在菜单项中添加了一对参数,允许您根据每个菜单项来更改缓存行为(启用/禁用页面缓存,以及更改页面缓存的生命周期)。由于插件使用了“存储时验证”机制,因此这种查找对缓存页面的性能没有影响。
关于“存储时验证”
“存储时验证”是我广泛使用的一种缓存理念。基本上,当您将项目存储在缓存中时,您会确定该项目是否可缓存(如果不可缓存,则不存储它)。这样一来,缓存读取就不需要担心参数和所有这些开销;如果项目存在于缓存中,那么它必须是可缓存的!如果您的缓存未命中的概率非常高(大多数项目不可缓存),这种方法可能会有些微的性能损失,但如果是中等至高命中概率(大多数项目可缓存),那么收益是巨大的。
目前我就处在这样一个阶段
我会继续更新进展情况...