如何防止智能横幅元标记的缓存?

时间:2014-07-22 18:24:15

标签: php android jquery caching meta-tags

我们的客户要求我们为iOS和Android的移动网站添加智能横幅广告。我们已经实现了所需的元标记:

<meta name="apple-itunes-app" content="app-id=ourAppID">
<meta name="google-play-app" content="app-id=ourAppID">

这很有效。 (我们正在使用Android的jquery.smartbanner plugin。)他们现在修改了要求;他们希望横幅只显示在网站的主页上,而且只是用户第一次在会话中点击主页。

<?php  
if (empty($_SESSION['showSmartBanner']) && $_SERVER['REQUEST_URI'] === '/' ): ?>
    <meta name="apple-itunes-app" content="app-id=ourAppID">
    <meta name="google-play-app" content="app-id=ourAppID">
<?php
    $_SESSION['showSmartBanner'] = false;
    endif;
?>

获取主页部分;它只在那里显示。但似乎忽略了对会话变量的检查。我已将错误记录下来,即使设置了会话变量(表示横幅不应显示),横幅仍然显示。

我能想到的唯一原因是meta标签正在被缓存。有没有办法精确控制元标记的缓存?我不想使用任何http-equiv元标记,因为据我所知,这会影响整个网站,而不仅仅是单个标记。

如果有人能想到另一个不起作用的原因,我会全力以赴。我一直盯着这个太久了,可能会遗漏一些明显的东西。

1 个答案:

答案 0 :(得分:0)

如果Empty($var)未设置或等于FALSE,

$var将返回True,因此在所有情况下都适合您。

将showSmartBanner重命名为dontShowSmarBanner,并在用户看到横幅时将其设置为True。

<?php  
if (empty($_SESSION['dontShowSmartBanner']) && $_SERVER['REQUEST_URI'] === '/' ): ?>
    <meta name="apple-itunes-app" content="app-id=ourAppID">
    <meta name="google-play-app" content="app-id=ourAppID">
<?php
    $_SESSION['dontShowSmartBanner'] = true;
    endif;
?>