%17 %635 %2014 %22:%十 %PM

Joomla中的缓存03-使用缓存来加速你的代码

作者
给本项目评分
(0 得票数)

本节将探讨一下如何使用JCache来加速php代码的执行速度。

 

joomla分析器


为了分析joomla使用cache的差别,我们需要先学会一个工具,那就是JProfiler.JProfiler是joomla的一个分析器。如果你开启joomla的出错系统,你就会清楚JProfiler的输出是什么了。JProfiler主要是用来分析代码执行的时间和消耗的内存的。利用JProfiler我们可以清楚的看到代码执行的速度。

使用JProfiler非常的简单具体的代码如下:

//new 一个分析器的实例
$profiler = new JProfiler();
$rows = test(); //执行你要测试的代码
echo $profiler->mark( ' WithOut Caching')."<br/>"; //调用mark方法,输出测试代码执行的时间

 具体的输出结果如下:

JCache类


 首先在使用JCache的时候,需要确认你的扩展的缓存设置为 开启状态。这个不是很理解是什么意思?

获得cache对象

$cache = JFactory::getCache();

如果你要你的组件使用缓存,虽然全局设置中禁用了缓存,我们还是可以在代码中进行启用。具体的代码如下:

$cache->setCaching(1);

下一步就是使用缓存进行缓存了。

正常情况下我们执行一个方法获得返回值的代码如下  $result = $obj->functionName($param);现在我们如果要使用cache的话,那么代码需要修改如下:

$result = $cache->call(array('className' ,functionName) ,$param);

如果是一个全局方法 调用就更加简单了

$result = $cache->call("functionName");

当用完cache的时候,可以调用clean进行清除,代码如下:

$cache->clean(); 注意:在joomla官网上使用的是$cache->cleanCache();但实际使用中,会提示出错,没有cleanCache这个方法。因此改为clean().但实际上我执行了这段代码,但是系统并没有删除缓存文件。

测试用例


<?php

// Create the profiler object

$cache = JFactory::getCache();
$cache->setCaching(1);

$profiler = new JProfiler();
$rows = test();
echo $profiler->mark( ' WithOut Caching')."<br/>";

$profiler = new JProfiler();
$rows = $cache->call("test");
// Do Some stuff
echo $profiler->mark(' With Caching')."<br/>";

$cache->clean();

function test()
{
	$db = JFactory::getDBO();
	for($i = 0 ;$i < 250 ;$i++)
	{
		$db->setQuery('SELECT * FROM #__content');
		$rows = $db->loadObjectList();
	}
	return $rows;
}
?>

 执行的结果就不截图了。

通过测试,我们得到如下结论。第一次执行的时候 不用缓存比用缓存快。第二次执行的时候。使用缓存比不适用缓存大约快400倍。这就是差距。

何时该使用缓存


通过上面的测试,我们知道使用缓存能够加速。但是这是有前提的,那就是每次执行的产生的结果都一样。如果每次结果都不一样,那么使用缓存可能会减慢速度。因此,我们需要明白,并不是每次使用缓存都能提高速度的。这个依据实际情况来定。一个基本的依据是,如果访问的数据库比较大,并且访问比较频繁,那么建议使用缓存。

$this->function需要注意的问题

当我们使用$this->function去缓存一个函数的执行结果的时候。我们需要清楚,系统会将整个对象都保存到文件中,系统通过检测对象的属性是否发生改变来决定是否刷新缓存。如果这个对象包含了一个时间戳,或者是Session ID 或者是一些其他每次都变得东西。那么系统将会自动禁用缓存。

解决这个问题的方式是建立自己的单件对象去储存信息。使用静态的方法来调用。

阅读 5863 次数 最后修改于 %17 %680 %2014 %23:%十 %PM