缓存动态页面/排除缓存的部分

4

我正在使用W3 Total Cache来缓存我的WordPress页面、文章等。
现在我创建了一个按钮,设置了一个会话变量,告诉服务器用户是想要移动设备还是桌面视图,并调用了这个函数:

<?php function mobile_css() {
    if(is_mobile() && !isset($_SESSION['mobile'])) : ?>
    <link type="text/css" media="all" rel="stylesheet" href="<?php bloginfo('template_url'); ?>/css/mobile.css" />
  <?php elseif($_SESSION['mobile'] == "ja") : ?>
    <link type="text/css" media="all" rel="stylesheet" href="<?php bloginfo('template_url'); ?>/css/mobile.css" />
    <?php endif;
}

问题在于页面在第一次加载时被缓存。因此,如果我使用会话移动设备打开页面,则显示移动版本;如果我切换到桌面设备并再次访问该页面,则仍然显示移动版本,因为它已经被缓存了,是第一次请求的结果。
有人有什么想法可以防止这种情况发生吗?
1个回答

6

好的,解决方案是片段缓存。首先,您需要通过设置来设置您的秘密短语。

define('W3TC_DYNAMIC_SECURITY', 'my_string');

wp-config.php文件中添加以下代码,然后您可以使用类似以下的PHP代码。
<!-- mfunc echo "Hello World<br/>"; --><!-- /mfunc -->

这会输出动态代码

<?php echo "Hello World<br/>"; ?>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接