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

标签 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 的正确技术,或者指导我找到可能对我的情况有用的指南或教程?

最佳答案

您的问题是 Drupal 缓存页面,这是一件好事,否则您可能会受到巨大的性能影响。

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

编辑:

经过深思熟虑,我认为更好的解决方案是创建一个自定义 block 。由于 Drupal block 有自己的缓存系统,您应该能够获得您想要的功能。自定义 block 是使用 hook_block 创建的

关于drupal - 在 Drupal 模板中运行未缓存的 PHP?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2526667/

相关文章:

mysql - Drupal中可以动态添加、编辑和删除数据的表格

javascript - 样式为 ="display: none"的图像是否仍会被下载和缓存?

magento - 与 magento CE 1.8 连接时的随机 redis 错误

Django 测试用例数据库给出不一致的响应、缓存或事务罪魁祸首?

javascript - 使用 cookie 来存储和获取一个整数

javascript - JS_of_ocaml - 获取 cookie 时出错

mysql - Drupal 7 - 更新数据库时出错

drupal - 如何更改页脚 由 Drupal 及其链接提供支持?

php - 使用 API 将模块的数据暴露给 Views2

c - 我如何监控 cookie 是否被发送到其来源域以外的域?