有没有办法为授权用户缓存drupal系统页面(例如分类/术语/%,论坛/%,节点)而没有核心黑客?
答案 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_get和cache_set。您可能还想查看Lullabot的优秀缓存article。
您可以对论坛/%,节点以及您想要的其他所有内容采用相同的方法。快乐缓存!