对于模块开发者来说,如果他们想使用缓存API的话,那么就需要掌握两个函数:cache_set()和cache_get()。
使用cache_set()缓存数据
cache_set()用来将数据写入到缓存中。函数签名如下:
cache_set($cid, $table = 'cache', $data, $expire = CACHE_PERMANENT, $headers = NULL)
函数参数有:
$cid:唯一的缓存ID字符串,用作缓存数据的键。使用冒号来定界可能的层级。
$table:用来存储数据的表的名字。你可以创建你自己的表,或者使用cache,cache_block, cache_filter,cache_form,cache_menu, cache_page。默认使用cache表。
$data:存储在缓存中的数据。PHP对象和数组将被自动序列化。
$expire:缓存数据的有效期的时长。可能值有CACHE_PERMANENT,CACHE_TEMPORARY,或者一个Unix时间戳。如果给定了一个Unix时间戳,并且当前时间超过了该时间戳,那么该数据的处理方式将和标记为CACHE_TEMPORARY的是一样的。
$headers:用于缓存的页面,传递给浏览器的HTTP头部字符串。
在modules/filter/filter.module中,有一个cache_set()示例:
// Store in cache with a minimum expiration time of 1 day.
if ($cache) {
cache_set($cid, 'cache_filter', $text, time() + (60 * 60 * 24));
}
使用cache_get()取回缓存的数据
cache_get()用来取回缓存的数据。函数签名如下:
cache_get($cid, $table = 'cache')
而函数参数有:
$cid:要取回的数据的缓存ID。
$table:要取回的数据所在的表的名字。你可以创建你自己的表,或者使用cache,cache_block,cache_filter,cache_form,cache_menu,cache_page。默认使用cache表。
在modules/filter/filter.module中,有一个cache_get()的示例:
// Check for a cached version of this piece of text.
if ($cached = cache_get($cid, 'cache_filter')) {
return $cached->data;
}
老葛的Drupal培训班 Think in Drupal