php - Magento session /缓存行为非常奇怪

标签 php javascript magento caching session-variables

我在 footer.phtml 中设置 Magento session 变量,如下所示

<?php Mage::getSingleton('core/session')->setPopup('1'); ?>

然后我通过在 footer.phtml 的接下来几行中编写的 JavaScript 来访问它。

var val = <?php echo Mage::getSingleton('core/session')->getPopup()?>;

但是当我尝试从我的网站主页访问此 session 变量时,它显示为空白。表示未设置。但如果我转到另一个页面,我可以看到 session 变量已设置为我想要的值。 然后,如果我返回主页,再次变量为空白(未设置)。

知道这种有趣行为的原因是什么吗?

注意:我在本地代码空间中覆盖了我的 Footer.php( block 文件),并注释掉了承包商中的所有兑现内容。这是为了确保 footer.phtml 不会被缓存。

但是我们还启用了全页缓存,不确定这会导致问题,如果是这样,如何在不禁用全页缓存的情况下修复该问题

最佳答案

通过将以下两行添加到 app/code/local/Mage/Page/Block/Html/Footer.php 来解决此问题,

protected function _construct()
{
    //Disabling footer from getting cashed by FPC
    $cache = Mage::app()->getCacheInstance();
    $cache->banUse('full_page');
}

关于php - Magento session /缓存行为非常奇怪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16804982/

相关文章:

php - 如何授予 PHP 对目录的写入权限?

javascript - 刷新页面时如何在嵌套列表中显示同一页面?

javascript - 如何从 javascript 中的相同多个 div 类名获取特定值?

Magento:管理 - 产品搜索过滤器

Magento 和 Prestashop,哪个更好?

magento - 从 Magento 中的订单 ID 获取订单号?

php - PHP 脚本中未输出 XML

php - 为什么在php中一行代码中会有多个对象运算符?

php - 如何在 php 中发送 json 请求?

javascript - 使用 Node js 和 Express 创建 Web 代理