我需要在 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/