许多Drupal函数使用一个静态变量来缓存数据。在一个HTTP请求的生命周期内,在第2次调用它时,将会立即返回数据。下面是一个来自于节点模块的例子:
function node_get_types($op = 'types', $node = NULL, $reset = FALSE) {
static $_node_types, $_node_names;
if ($reset || !isset($_node_types)) {
list($_node_types, $_node_names) = _node_types_build();
}
...
}
缓存总是有代价的。静态变量缓存的代价就是内存。幸运的是,与数据库CPU循环相比,内存一般还是很富裕的。
老葛的Drupal培训班 Think in Drupal