在 Sitecore 中自定义子布局缓存

2023-12-21

在 Sitecore 中使用 WebControls 时,有一种方法可以自定义缓存行为 - override获取缓存ID方法。 有没有办法通过子布局(用户控件)实现类似的效果?我想添加自定义“VaryBy”选项(示例 - “Vary By Moon Position”)。


是的,默认情况下,子布局缓存可能会因几个不同的标准而异。您可以利用参数变化来做到这一点。变化范围是:

  • 因数据而异
  • 因设备而异
  • 因登录而异
  • 因参数而异
  • 因查询字符串而异
  • 因用户而异

您在此处进行自定义的方法是“按参数变化”,您可以定义参数是什么。您可以在“演示详细信息”中执行此操作,在其中动态地将子布局分配给项目(控件属性底部有一个部分用于定义参数),或者您可以通过 C# 代码进行设置。下面是一个使用 C# 代码将子布局静态分配到我的布局中的示例:

<h1>My website</h1>
<h2>My site is great</h2>
<sc:Sublayout ID="slMyControl" path="~/path/to/my/control.ascx" VaryByParm="true" Cachable="true" runat="server" />

(上面代码中需要注意的一点是,VaryByParam 的属性实际上是VaryByParm在 Sitecore 中,这显然是他们代码中的拼写错误。)

现在在 C# 中,以编程方式设置参数:

slMyControl.Parameters = "myKey1=MyVal1&myKey2=myVal2";

如果您可以在 C# 中获取月球位置,则将其转换为字符串并将其分配给参数:

slMyControl.Parameters = "position=" + getMoonPosition().ToString();

我最近按查询字符串中出现的月份和年份缓存了一个日历。没有错误处理的简单示例:

slEventCalendar.Parameters = string.Format("m={0}&y={1}", Request.QueryString["m"], Request.QueryString["y"]);

最终得到的参数字符串最终成为实际缓存键的一部分。将其与其他选项相结合,只需使用更多条件创建更复杂的缓存键,从而获得更多缓存实例。一般规则是,按照您需要的最少量的标准进行缓存,这将导致该缓存实例的最大使用量。

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

在 Sitecore 中自定义子布局缓存 的相关文章

  • 合并 PDF iTextSharp

    我在网上查看了一些示例 并提出了使用 iTextSharp 合并 pdf 的代码 但我收到一个错误 该文档没有页面 它失败于页面 writer GetImportedPage reader X 这是堆栈跟踪 at iTextSharp te
  • 浏览器何时自动清除外部 JavaScript 文件的缓存?

    我有一个可以随时编辑的 JavaScript 资源 一旦编辑完成 我希望它能够相对较快地传播到用户的浏览器 例如可能 15 分钟左右 但是 编辑此资源的频率很少 可能每月 2 次 我宁愿将资源缓存在浏览器中 因为它将被频繁检索 但我也希望缓
  • 如何在 ASP.Net Web API 中为特定控制器启用 Windows 身份验证

    我想知道是否有一种方法可以仅为特定 ASP Net Web API 控制器的特定操作启用 Windows 身份验证 我的 Web API Web 服务有几个具有多种操作的控制器 但只有一个控制器的一个操作需要 Windows 身份验证 此
  • ASP.NET MVC 最佳实施实践

    最近 我被要求完全重写和重新设计一个网站 该公司的所有者强调 他希望该网站采用最新 最先进的技术来制作 但要避免额外的成本 截至目前 我在研究 CMS 实现和使用 MVC 编写新实现之间左右为难 该网站主要是宣传册件 但需要允许访问者通过表
  • 缓存可用于 WCF 和 ASP .NET 应用程序 (.NET 3.5)

    我需要可以在 WCF 和 ASP NET 应用程序中使用的缓存工具 我见过 System Web Caching Cache这在 WCF 中不可用 据我所知 只有当服务托管在 IIS 中时它才可用 但情况并非总是如此 System Runt
  • Google 日历重定向_uri_不匹配

    我在 Visual Studio Express 2012 for Web 中有一个网站 当我尝试以下代码时 我不断收到来自 google 的错误 该错误表示开发人员控制台中列出的重定向 uri 不匹配 private void getEv
  • 实体框架的提供程序连接字符串是否可以替换为 web.config 中已定义的数据库连接字符串?

    我在 web config 的 connectionString 部分中定义了一个数据库连接字符串 ApplicationServices 并有 3 个实体框架连接字符串 它们的提供程序连接字符串属性与 ApplicationService
  • asp.net Web Api 路由不起作用

    这是我的路由配置 config Routes MapHttpRoute name ActionApi routeTemplate api controller action id defaults new id RouteParameter
  • Firefox 和 IE:从缓存检索数据时损坏数据

    我向服务器发出一个请求 如下所示 http localhost Combine aspx flag file1 js file2 js file3 js 我也尝试过这个 http localhost Combine aspx flag va
  • 在浏览器中加载虚拟目录名时,AcquireRequestState中的Session为空,但加载Default.aspx时,Session不为空

    我有一个 ASP NET 4 0 WebForms 应用程序 我需要访问HttpContext Current Session并在中设置一个值AcquireRequestStateGlobal asax 中的事件 或其之后的事件 我发现了一
  • ASP.NET MVC 4 FileResult - 错误

    我在控制器上有一个返回 PDF 的简单操作 工作正常 public FileResult GetReport string id byte fileBytes manager GetReport id string fileName id
  • 检查域名是否可供购买 - C# [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有什么方法可以检查某个域名是否可以购买 是否有任何图书馆可以做到这一点 THanks 您可以看一下 ht
  • 阻止跨域调用 asp.net .asmx Web 服务

    我构建了一个应用程序 它使用 jQuery 和 JSON 来使用 ASP NET asmx Web 服务来执行增删改查操作 应用程序和 asmx 位于同一域中 我不介意人们远程消耗 asmx 的读取操作 但不希望人们随机删除内容 我可以将我
  • 在 JavaScript 中获取当前会话值?

    我有一个场景 我在浏览器中打开 Web 应用程序 但在两个单独的选项卡中 在一个选项卡中 我从应用程序注销 因此所有会话值都变为空 在另一个选项卡中 我单击了网络应用程序中的锚标记 在锚标记的 jquery on click 事件中 我检查
  • 将动态控件插入控件集合的中间

    这是我的第一篇文章 我非常绝望 所以我超越了我的标准谷歌搜索 我相信这是一个高级或专家级 NET 问题 问题是我已经构建了一个 NET Web 应用程序 它需要能够将用户控件动态插入到列表中间 我对动态控件非常满意 只要它们只需要添加到列表
  • 毕加索不在磁盘上缓存图像

    我必须使用自定义 OkHttpClient 以便我可以向图像请求添加标头 问题是毕加索不会因此而在磁盘上缓存任何图像 我用过setIndicatorsEnabled true 检查缓存 我只看到红色指示器 当我使用默认的 OkHttpDow
  • ASP.NET 5 未在开发模式下运行

    我已将 ASP NET 5 项目更新为 beta 8 现在我们应该使用以下 Web 命令 commands web Microsoft AspNet Server Kestrel 现在我已经使用环境变量更新了我的项目 这也更新了我的 lau
  • 如何在 ASP.NET 中动态添加文本框?

    我对我的 asp net 页面有以下要求 用户可以通过单击 添加新类别 超链接在页面 A 上动态添加文本框 他点击页面 A 上的提交按钮并被重定向到页面 B 当他单击此页面中的页面 A 链接时 他添加的文本框应该保留 有人可以帮我解决这个问
  • 在哪里存储加密密钥 MVC 应用程序

    我正在使用 AES 加密 解密类 该类需要密钥值和向量值来加密和解密 MVC3 应用程序中的数据 保存记录时 我对数据进行加密 然后存储在数据库中 当我检索记录时 我在控制器中解密并将未加密的值传递给视图 我们关心的不是在数据通过网络时保护
  • 找出用户属于哪些组

    我有一个刚刚创建的 Windows 用户帐户 以 XYZ 为例 此 XYZ 属于我在计算机管理 gt 本地用户和组中创建的用户组和自定义组 因此 在属性中我看到该用户属于 2 个组 现在我想获取这些组并显示它们 有什么建议么 我已经这样做了

随机推荐

  • 按日期访问累计总数

    我需要按在线日期显示我们所有能源项目的累积功率 因此 如果一个项目在 2016 年上线 那么它也在 2017 年和 2018 年上线 应该计入这些总数中 我基本上需要一张可以回答问题的表格 What was our energy capac
  • jQuery 在 if 语句中使用“this”

    我正在使用一个if语句以确定元素是否有子元素 如果它没有任何子元素 我只想对该元素做一些事情 这是我想做的事情的前提 if div a children length gt 0 this hide 所以如果一个 a 标签没有子元素 我想对该
  • 将 JSON 作为类型导入

    如何定义导入的 json 的类型 例如 things foo interface Data things String another String import data from data json Should have type D
  • C++ 无法更改对象的变量

    class ship public int location int length void createship ship ship1 int gridsize function to set ship1 s length and loc
  • 如何删除列表中的复选框

    我懂了堆栈闪电战 https stackblitz com edit list examples file app 2Fselection list 2Fselection list component html具有选择的列表的示例 如下图
  • URLLoader 轮询时卡住

    更新 不知怎的 这在浏览器中运行 flash 时有效 但如果从 IDE 运行则不起作用 如果您遇到同样的问题 您可能想尝试在浏览器中运行 我正在制作一个聊天应用程序 它使用 Flash 和 Actionscript 3 0 从我的服务器重复
  • List.permute 的性能

    我实现了一个费舍尔 耶茨洗牌 http en wikipedia org wiki Fisher E2 80 93Yates shuffle The modern algorithm最近 它使用List permute对列表进行洗牌 并注意
  • 如何使用类似 SQL 的接口 INSERT 到 influxDB 中?

    是否有可能INSERT使用 InfluxDB 上类似 SQL 的接口将数据转换为系列 测量值 是的 您可以简单地INSERT线路协议字符串 https docs influxdata com influxdb v1 6 tools shel
  • 在 JavaScript 对象中将键值分配给另一个键值[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 例如 我知道可以在 Javascript 中设置带有前面键值的键值 var obj one yes two obj one obj two
  • 在 Joomla 中加载另一个模块中的模块

    我绝对是 Joomla 的初学者 我正在尝试在另一个模块中加载一个模块 但我找不到如何执行此操作 我一直在尝试添加 loadposition position 用 position 替换了我想要加载的模块的位置 但它似乎只在文章中起作用 我
  • StatelessSession 在 AbstractEntityPersister (Hibernate) 中被转换为 Session

    我正在尝试对 StatelessSession 进行简单的保存 有人能发现我做错了什么 导致 Hibernate 方法尝试将 StatelessSession 无效转换为 Session 如果有任何反馈 我将不胜感激 我的示例代码 Stat
  • python-click:格式化帮助文本

    这个问题是关于click https click palletsprojects com en 7 x 包裹 帮助的长文本未按预期显示 我尝试使用 b也一样 但似乎影响不大 cmd and powershell相同的代码有不同的结果 为什么
  • 在图像opencv上绘制矩形?

    我已经使用 python 中的 opencv 库加载了一个图像 现在我想使用鼠标绘制一个矩形 但是在绘制矩形时 矩形应该是可见的 以便绘制它的人可以以某种方式放置它 使感兴趣的对象完全可见在矩形中 但我的代码没有产生所需的输出 我的代码是
  • JQuery $('iframe').ready 为什么不起作用?

    我的父页面中有一个很长的 iframe 当您重新加载或单击 i 框架页面内的链接时 它会加载到其中 但纯窗口必须向上滚动 我尝试过各种代码示例 jquery哪个事件比这个更好 https stackoverflow com question
  • Node.js 是 Perl 和 Python 等传统脚本语言的可行替代品吗? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 是否有开源电子邮件消息(标头、附件等)解析器?

    是否有免费的开源解决方案将原始电子邮件消息 作为一段文本 并返回每个标头字段 每个附件和消息正文作为单独的字段 是的 对于你指出的每一种语言 我自己都在Python 中使用过 尝试仔细阅读您选择的库的库文档 注意 您可能期望有一个 不错的
  • mono:使用 monodevelop 可以进行远程调试吗?

    mono 使用 monodevelop 可以进行远程调试吗 我想远程调试在 CentOS 开发计算机上安装了 monodevelop 的远程 RHEL 服务器上运行的控制台应用程序 这对于 monodevelop 可能吗 这实际上可以通过软
  • 如何限制 haar 级联检测到的人脸数量

    我在情绪检测系统中使用 Haar 级联 我提供给模型的每个视频输入中只有一张脸 这是一项要求 当我运行 Haar 级联模型来检测人脸时 它有一些误报 由于视频中只有一张脸 因此我想选取检测到的最积极的区域并忽略所有其他检测 有没有办法做到这
  • 使用 htaccess 阻止所有人,除了来自特定引荐来源网址的访问者

    在 htaccess 中 如何阻止除来自特定域的访问者之外的所有访问者 我尝试了这个但没有成功 serve everyone from specific domain or specific user agent RewriteCond H
  • 在 Sitecore 中自定义子布局缓存

    在 Sitecore 中使用 WebControls 时 有一种方法可以自定义缓存行为 override获取缓存ID方法 有没有办法通过子布局 用户控件 实现类似的效果 我想添加自定义 VaryBy 选项 示例 Vary By Moon P