禁用特定块的全页缓存

2024-03-15

我正在使用具有全页缓存功能的 magento EE。有一个动态更新的块,但我似乎无法禁用它的缓存。 我想要实现的理想目标是:仅禁用特定块的缓存,以便每次页面加载时都会再次呈现它。 我尝试过的事情:

将 unsetData 包含到布局文件中

<action method="unsetData"><key>cache_lifetime</key></action>
<action method="unsetData"><key>cache_tags</key></action>

设置函数 _saveCache 返回 false

protected function _saveCache($data, $id, $tags = array(), $lifetime = null) {
    return false;
}

设置不同的值cache_lifetime

public function __construct()
{
    $this->addData(array(
    ‘cache_lifetime’ => 0,
    ‘cache_tags’ => array(Mage_Catalog_Model_Product::CACHE_TAG),

    ));
}

也许我在全页缓存机制中遗漏了一些东西?


好吧,我发现了一些好帖子并使用以下方法实现了我的缓存etc/cache.xml,它用容器对象包装我的块。

My cache.xml:

<?xml version="1.0" encoding="UTF-8"?>
<config>
<placeholders>
    <namespace_block_unique_node>
        <block>module/block_class</block>
        <name>name_of_block_in_my_layout</name>
        <template>path/to/my/template</template>
        <placeholder>UNIQUE_PLACEHOLDER_HERE</placeholder>
        <container>Namespace_Module_Model_Caching_Container_BlockName</container>
        <cache_lifetime>86400</cache_lifetime>
    </namespace_block_unique_node> 
</placeholders>
</config>

我在这里用作block不应缓存的块,如name我的布局中的块的名称,以及container我已经选择了我的容器。

容器代码:

<?php

class Namespace_Module_Model_Caching_Container_BlockName extends Enterprise_PageCache_Model_Container_Abstract 
{

protected function _getCacheId()
{
    return 'NAMESPACE_MODULE_BLOCKNAME' . $this->_getIdentifier();
}

protected function _getIdentifier() 
{
    return microtime();
}

protected function _renderBlock() 
{
    $blockClass = $this->_placeholder->getAttribute('block');
    $template = $this->_placeholder->getAttribute('template');
    $block = new $blockClass;
    $block->setTemplate($template);
    $layout = Mage::app()->getLayout();
    $block->setLayout($layout);
    return $block->toHtml();

}

protected function _saveCache($data, $id, $tags = array(), $lifetime = null) { return false;}
}

这里我放了microtime()函数来识别块,但在我的模块内我使用了与我的模块相关的 cookie 变量。我相信,当没有真正改变任何内容时,可以节省块的冗余重新加载。

我在其他教程中没有找到的事情是我必须创建布局变量并将其分配给我的块,否则我只能得到我的块而不是整个页面。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

禁用特定块的全页缓存 的相关文章

  • MVC 5 中的“缓存配置文件”

    我是 MVC 的初学者 我有一个项目要从 MVC2 转换到最新版本的 MVC 我读了一些关于MVC 4的书 所以我开始了解主要机制 但是 在转换我的 MVC 2 解决方案时 我遇到了一个属性问题 OutputCache 例如 我有多个这样的
  • Google Cloud CDN“强制缓存所有内容”不缓存所有内容

    我正在为我的 WordPress 网站使用 Google Cloud CDNhttps cdn datanumen com https cdn datanumen com 我已启用 强制缓存所有内容 选项 然而 网页 css文件 javas
  • 重新排序 Magento JavaScript 包含 (addJs)

    我会保持简单 在我的产品页面上 我需要删除prototype js 文件并将其替换为最新版本的prototype 到目前为止 我已经使用 local xml 成功替换了它
  • __builtin___clear_cache 如何工作?

    浏览 gcc 文档 我偶然发现了内置函数 builtin clear cache 内置函数 void builtin clear cache char begin char end 此函数用于刷新处理器的指令缓存 以获取开始包含和结束排除之
  • 阻止 Google Chrome 发送 Sec-Fetch 标头

    我想在我的 Web API 2 net framework 4 6 2 应用程序 中缓存静态内容 index html 我编写了 OWIN 中间件 添加了一个cache control响应的标头 允许从浏览器缓存中检索后续请求 OWIN 上
  • Azure 函数和缓存

    我们计划开发一个 Azure 函数 其输入触发器是服务总线消息 输出是 blob 存储 服务总线消息将包含图像 url 该函数会将图像大小调整为预定义的分辨率 并将上传到 azure blob 存储 图像大小应调整到的分辨率存储在数据库中
  • 使用magento中SOAP API的salesOrderInfo获取简单的产品sku和数量

    我在以下代码中添加了 app code core Mage Sales Model Order Api php File public function info orderIncrementId order Mage getModel s
  • Magento 外部登录不会创建会话 cookie

    我正在尝试从外部站点替换 Magento 的相当笨拙的 ajax 登录 该网站使用 Magento 作为商店 站点和 magento 商店都有自己的登录信息 因此当用户登录时 两者同步非常重要 这是通过每次页面重新加载时进行 ajax 调用
  • Rails:控制文件存储缓存大小

    Rails 中基于文件的缓存的文档说 请注意 缓存将不断增长 直到磁盘已满 除非您 定期清除旧条目 不幸的是 它没有提供任何有关如何定期清除旧条目的信息 是否设置合适的值 expires in完成这项工作还是清除缓存背后还有其他某种黑魔法
  • 缓存静态 HTML 站点

    我通常使用 WordPress 但刚刚为客户完成了一个项目 该项目是一个静态 HTML 页面 由 8 个页面和每页约 2 个图像组成 使用 WordPress 我会使用 w3 总缓存 cloudflare photon 或通过 wp 引擎的
  • 在本地计算机上安装 magento 后,我忘记了管理员密码

    在我的本地计算机上安装 magento 后 我忘记了我提供的管理员密码 我无法登录我的管理区域 如何重置密码 我读过这篇文章http www atwix com magento reset admin password mysql http
  • 下订单时如何在 Magento 中触发电子邮件?

    我需要以下问题的解决方案 1 客户下订单 2 店主收到没有价格信息的电子邮件 例如装箱单 我需要编辑哪些文件 我读过很多帖子 但他们似乎没有提到文件路径 Thx 实现这一目标的两种可能方法 您可以为该类创建模型重写Mage Sales Mo
  • 如何获取捆绑选项选择 SKU?

  • 如何禁用通过 IIS 提供的单页应用程序 HTML 文件的缓存?

    我有一个通过 IIS 提供服务的单页面应用程序 Angular js 如何防止 HTML 文件缓存 该解决方案需要通过更改index html 或web config 中的内容来实现 因为无法通过管理控制台访问IIS 我目前正在研究的一些选
  • Laravel 模型访问器从缓存中获取 - 性能增强

    我在数据库中有一个项目列表 每个项目都可以选择被否决或赞成 这些投票与其他项目字段一起存储在 MySql 中 例如这样的事情 Schema create items function table table gt increments id
  • 检测集合是否包含数据

    这可能是一个简单的问题 但我找不到答案 我如何知道我的收藏是否没有数据 I do datas Mage getModel zzz zzz gt getCollection 如果我做一个 datas gt getData 它返回一个空数组 但
  • 咖啡因与番石榴缓存

    根据这些微观基准 https github com ben manes caffeine wiki Benchmarks事实证明Caffeine https static javadoc io com github ben manes ca
  • Blue Dragon Coldfusion 服务器缓存问题

    我有一个在 ColdFusion MVC 框架 Mach II 中构建的应用程序 并托管在蓝龙 ColdFusion 服务器上 它会导致缓存问题 当我添加一个包含一些内容的新页面并加载该页面时 它工作正常 但是 当我在同一个文件中进行一些更
  • 检查前端是否管理员登录

    我编写了一个模块 其行为方式应与内联翻译相同 如果我是管理员并且已登录 我可以在前端看到一些特别的东西 但如果我不是管理员 那么我就看不到任何东西 如何让模块知道前端区域管理员已登录 UPDATE 1 为了澄清事情 我想描述一下我的模块行为
  • 将 Google 信任徽章添加到 Magento

    我正在尝试将 Google Trust Badge 添加到我的 magento 商店 我尝试在 Magento 网站上搜索扩展程序 但找不到 我是否需要将以下代码粘贴到产品和结账页面 还是必须对其进行更改 如果有人能引导我走向正确的方向 我

随机推荐

  • 具有依赖于时变 LQR 返回的 K 矩阵的成本函数的非线性系统的直接转录

    我正在致力于实现一种名为 DIRTREL 的轨迹优化算法 该算法本质上是带有附加成本函数的直接转录 然而 成本函数包含通过围绕决策变量 x u 线性化系统并采用离散时变 LQR 获得的 K 矩阵 我的问题是如何在 drake 中最有效 最简
  • 如何使用 pydicom 创建 JPEG 压缩 DICOM 数据集?

    我正在尝试使用创建 JPEG 压缩 DICOM 图像pydicom https pydicom github io pydicom stable 可以找到有关彩色 DICOM 图像的精彩源材料here http dicomiseasy bl
  • 我可以在代码上强制执行哪些类型的模式,以便更轻松地转换为另一种编程语言? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正着手做一个业余项目 其目标是将代码从一种编程语言翻译成另一种编程语言 我开始使用的语言是 PHP 和 Python Python
  • 当我将项目导出到 jar 文件时如何包含我的图标

    我开发了一个桌面应用程序 问题是当我将应用程序导出到 jar 文件时 应用程序中未显示图标 当我从 Eclipse 运行它时 所有图标都显示在那里 我的项目的一个例子 package net ebank gui import java aw
  • PHP JSON 编码不起作用

    这是我想要编码为 JSON 的数组的 var dump array 3 0 gt array 2 From gt string 14 08 August 2013 To gt string 14 21 August 2013 1 gt ar
  • C++ 对象参数:多态性、值语义、对象生命周期?

    当我从 C 过渡到 C 时 我收到了很多关于尽可能使用值语义的建议 几乎可以保证 如果我在任何地方发布带有指针的问题 就会有人出现并建议它应该是一个值 我开始看到曙光 我在代码中发现了很多地方可以用堆栈分配的变量 通常是引用 替换动态分配和
  • python 中的图形上有很多边

    我有以下脚本 import pandas as pd from igraph import df p c pd read csv data edges csv edges list edges vertices list dict case
  • 您可以以非 root 用户身份在非特权容器中运行 DPDK 吗?

    我正在尝试在非特权 Docker 容器中运行 DPDK 虽然我可以限制容器的权限并将容器指定为非特权容器 但我仍然需要以 root 身份运行 dpdk 应用程序 例如 testpmd 我还可以以非 root 身份运行容器并使用 sudo 启
  • 将 .NET Core 2.0 Web 应用程序发布到 Azure 应用服务时出错

    我最近将 Visual Studio 2017 Community Edition 从版本 15 6 2 升级到 15 6 3 从那时起 我一直无法使用现有的发布配置文件成功将 NET Core 2 0 Web 应用程序部署到我的 Azur
  • 有什么方法可以捕获声明时常量的名称吗?

    我有课 我们称之为 SomeClass class SomeClass end 我不想以正常方式定义此类的实例 而是使用常量来定义它们 MyConstant SomeClass new 我希望能够捕获某个类设置的常量的名称 就像标准 rub
  • Webpack SASS-loader include 语句中断 SASS @import 语句

    因此 对于背景 最初我在 Webpack 配置中排除了 node modules 目录 该目录对于我的 sass import 语句运行良好 但很难包含 node modules 目录中的内容 所以我将SASS加载器切换为以下 test s
  • 获取与 URL 关联的所有 IP,Python

    我正在尝试查找与某个 URL 关联的所有 IP 我一直在使用 socket 包 但对不同功能返回的不同数量的 IP 感到困惑 例如见下文 有没有返回所有IP的函数 socket gethostbyname google com return
  • 使用Python mechanize下载文件

    我正在尝试使用 python 和 mechanize 从网站下载文件 我当前的代码成功登录网站并打开包含下载链接的页面 下载链接是 https www lendingclub com browse browseNotesRawDataV2
  • 升级到 XCode 4 后无法链接 ppc

    我跟着这些说明 https stackoverflow com questions 5333490 how can we restore ppc ppc64 as well as full 10 4 10 5 sdk support to
  • 单击 POI 时获取谷歌地图上的 placeId

    我在我的网站上使用 Google Maps JS V3 API 当用户搜索某个地点时 我可以通过 placeId 使用 getDetails 当用户单击 POI 时 我想执行相同的操作 但是 当用户单击 POI 而不是使用搜索框时 我似乎找
  • Fabric.js 子类中的颜色正在更改为黑色。

    我正在尝试子类 Fabric Group 并将 JSON 字符串加载到其中 我遇到的问题是子类组中的 Fabric Rect 的颜色正在更改为黑色 当我直接在 Fabric Group 中执行此操作时 效果很好 我一直在玩 fromObje
  • Ruby Mailer:参数数量错误

    我正在努力构建我的邮件程序 但我不断遇到 参数数量错误 0 代表 1 可以说我疯了 但我觉得我定义的一切都是正确的 控制器 为简洁起见被截断 def create cms484 Cms484 new cms484 params respon
  • scala 中的间接递归泛型类型定义

    直接类型递归就可以工作 trait TT T lt TT T 但我可以用天真的方法做间接的 trait UU V lt VV UU V trait VV U lt UU VV U 给我错误 CyclicTraits scala 23 err
  • C++ 中对外部命令的线程安全并发调用

    我一直在互联网上寻找一种方法 以线程安全的方式从我的 C 程序中并发调用外部程序 据我了解 popen system 和 fork 都不是线程安全的 在我看来 这里缺少了一些东西 到目前为止我还没有找到 是否有可能没有办法从不同线程并发调用
  • 禁用特定块的全页缓存

    我正在使用具有全页缓存功能的 magento EE 有一个动态更新的块 但我似乎无法禁用它的缓存 我想要实现的理想目标是 仅禁用特定块的缓存 以便每次页面加载时都会再次呈现它 我尝试过的事情 将 unsetData 包含到布局文件中