gpt4 book ai didi

sitecore - 通过 MVC 渲染的 URL 改变缓存?

转载 作者:行者123 更新时间:2023-12-01 17:31:11 25 4
gpt4 key购买 nike

使用 Sitecore 7,我的大部分查询字符串已成为自定义路由。例如:

OLD: /calendar?year=2013&month=7&day=14
NEW: /calendar/2013/7/14

因此,我发现自己需要通过 URL(而不是查询字符串)改变渲染的 HTML 缓存。 Sitecore 是否提供了一种通过 URL 改变 MVC 渲染缓存的便捷方法?

更新

我发现所有 MVC 渲染都通过 mvc.renderRendering 管道,它们的缓存 key 是在以下类中生成的:

Sitecore.Mvc.Pipelines.Response.RenderRendering.GenerateCacheKey

通过重写此类的 GenerateKey(Rendering reporting, RenderRenderingArgs args) 方法,我能够使用 site.Request.FilePath 成功附加原始 URL。我现在面临的问题是如何从渲染本身中提取这个缓存设置?我认为我需要在渲染上创建一个新的“VaryByUrl”缓存选项,但我不太确定。

更新2

我能够使用以下代码从渲染定义项中读取自定义字段。它可以工作,但它只查看定义项(而不是演示文稿详细信息中渲染的实际实例)

protected override string GenerateKey(Rendering rendering, RenderRenderingArgs args)
{
var key = base.GenerateKey(rendering, args);

if (rendering.RenderingItem.InnerItem.Fields["VaryByUrl"] != null)
{
var varyByUrl = ((CheckboxField)rendering.RenderingItem.InnerItem.Fields["VaryByUrl"]).Checked;
if (varyByUrl) key += GetUrlPart(rendering);
}

return key;
}

最佳答案

我们还需要 VaryByUrl,但是是在 WebForms 架构中 (v.6.5.0)。

对于子布局定义,我重写了 Sublayout 类以添加 VaryByUrl,类似于上面的完成方式。

假设您的 Sitecore 版本仍然使用相同的渲染参数模板,对于渲染实例,您必须创建/sitecore/templates/System/Layout/RenderingParameters/的 Source 字段中引用的类的您自己的版本标准渲染参数/缓存/缓存。

这是“源”字段中的类引用:类型=Sitecore.Shell.Applications.Layouts.DeviceEditor.CachingField,Sitecore.Client

关于sitecore - 通过 MVC 渲染的 URL 改变缓存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17642304/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com