在Drupal模板中运行未缓存的PHP?

时间:2010-03-26 20:52:58

标签: drupal caching cookies

我需要在Drupal模板中运行PHP代码片段并阻止它被缓存。 PHP代码段嗅探cookie,如果找到,则返回基于cookie值的消息。

即:

if(isset($_GET['key'])) { 
    $cookievalue = $_GET['key']; 
}

if(isset($_COOKIE['cookname'])) { 
    $cookievalue = $_COOKIE['cookname']; 
}

switch ($cookievalue) { 
    case hmm01: echo "abc"; 
    break; 
    case hmm02: echo "def";
    break; 
    case hmm03: echo "ghi"; 
    break; 
    default: echo "hello"; 
}

现在,Drupal根据首次缓存页面的时间并根据当时使用的cookie随机呈现邮件。

我无法看到关于如何进行此操作的大量信息 - 似乎您必须关闭页面的缓存而不是运行未缓存的PHP代码。

社区是否可以根据我发布的信息指导我如何使用关于Drupal模板和PHP的正确技术,或者将我引导到可能对我的情况有用的指南或教程?

1 个答案:

答案 0 :(得分:1)

你的问题是Drupal缓存页面这是一件好事,因为否则你可能会获得巨大的性能。

一个解决方案虽然不那么漂亮,但是让js用Ajax发布数据。由于Drupal不缓存帖子请求,这可能是一个解决方案。然而,它依赖于js并提出额外的请求,这需要额外的系统资源。但至少它比disbling页面缓存更好。

编辑:

在考虑之后,我认为更好的解决方案是创建一个自定义块。由于Drupal块具有自己的缓存系统,因此您应该能够获得所需的功能。使用hook_block

创建自定义块