缓存drupal系统页面

时间:2011-03-09 17:34:11

标签: drupal caching drupal-7

有没有办法为授权用户缓存drupal系统页面(例如分类/术语/%,论坛/%,节点)而没有核心黑客?

2 个答案:

答案 0 :(得分:1)

对于drupal 6,有http://drupal.org/project/authcache。我不相信drupal 7有一个准备就绪的模块。

答案 1 :(得分:0)

您可以启动自定义模块上的hook_menu_alter,然后您可以通过该路径执行任何操作(分类/术语/%).

检查这些路径的函数回调是什么。例如:

mysql>
select * from menu_router where path like '%taxonomy/term/%';

它表示页面回调是taxonomy_term_page。您不需要将所有代码复制到自定义函数中,您只需要执行以下操作:

function mymodule_menu_alter(&$items) {
  // Route taxonomy/term/% to my custom caching function.
  $items['taxonomy/term/%']['page callback'] = 'mymodule_cached_taxonomy_term_page';
}

function mymodule_cached_taxonomy_term_page($term) {
  // Retrieve from persistent cache.
  $cache = cache_get('taxonomy_term_'. $term); 

  // If data hasn't expired from cache.
  if(!empty($cache->data) && ($cache->created < $cache->expire)) {
    return $cache->data;
  } else {
  // Else rebuild the cache.
    $term_page = taxonomy_term_page($term);
    cache_set('taxonomy_term_'. $term, $term_page, 'cache_page', strtotime('+30 minute'));
    return $term_page;
  }
}

如果沿着这条路走下去,您会想要熟悉cache_getcache_set。您可能还想查看Lullabot的优秀缓存article

您可以对论坛/%,节点以及您想要的其他所有内容采用相同的方法。快乐缓存!