首页 > 网站 > 建站经验 > 正文

Drupal7的cache缓存开发实例教程

2024-08-30 19:07:47
字体:
来源:转载
供稿:网友

本文实例讲述了Drupal7的cache缓存开发的方法。分享给大家供大家参考。具体方法如下:

Drupal是一款非常好用的php开发的开源内容管理框架了,这个框架在缓存方面做得非常的不错,下文一起来学习Drupal7 cache缓存开发吧。

使用Drupal构建复杂而动态的内容是件很容易的事情。但是稍有不慎,你会为这种容易付出代价。在用户查看某些复杂而动态的页面的时候,复杂的数据库查询,与高花销的计算会导致页面性能方面的问题。

解决方案之一是在Druapl的后台页面开启页面缓存。页面缓存开启后,可以在某些页面极大的降低数据库查询次数从而提高页面性能。但是这有一定的局限性,就是页面缓存仅仅对匿名用户有效。对应登录用户则会生效。

逐渐的,你可能会分析自己写过的代码,找出数据出查询的热点进行缓存优化。幸运的是,Drupal已经内置了一些缓存API,如果遵循下面的一些规则,可以将你的代码优化工作变得更容易。

基本规则:

规则:如果计算结果可以重用或存储,就不要计算两次。
下面的简单例子用来演示这种情况。


function my_module_function() {
$my_data = &drupal_static(__FUNCTION__);
if (!isset($my_data)) {
//将一些高花销的计算逻辑写在这里,并将结果赋值给$my_data变量。
}
return $my_data;
}

理解上面的的代码,需要一定的php基础知识。
首先是知道php有个变量类型是静态变量(static)。drupal_static函数其实就是实现static变量的集中管理。
其次是函数前加"&"符号,这种是按址传值。这样的话,对$my_data变量的任何更改,对&drupal_static(__FUNCTION__)都会相应更改。

这两点理解后再来看上面的逻辑,发现虽然只有一个if判断,但其实这段代码是精妙无比的。

进阶:善用Drupal的cache函数。

在上面的代码中,静态变量的数据只会在一次的页面加载过程中有效。如果重新访问该页面,则会重新进行数据的计算。就是说静态变量缓存的数据只是暂时的,没有长久的存储起来。下面的代码,演示如何将复杂的计算结果的数据存储到drupal的cache表中,从而实现长久存储的目的。


function my_module_function() {
$my_data = &drupal_static(__FUNCTION__);
if (!isset($my_data)) {
if ($cache = cache_get('my_module_data')) {
$my_data = $cache->data;
}
else {
//将一些高花销的计算逻辑写在这里,并将结果赋值给$my_data变量。
//这里将计算的结果保存到cache表中。
cache_set('my_module_data', $my_data, 'cache');
}
}
return $my_data;
}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表