Der*_*ker 6 sitecore sitecore7 sitecore-mvc
使用Sitecore 7,我的大多数查询字符串都成为自定义路由.例如:
OLD: /calendar?year=2013&month=7&day=14
NEW: /calendar/2013/7/14
Run Code Online (Sandbox Code Playgroud)
结果,我发现自己需要通过URL而不是查询字符串来改变我的渲染的HTML缓存.Sitecore是否提供了一种通过URL为MVC渲染变化缓存的便捷方式?
UPDATE
我发现所有MVC渲染都通过mvc.renderRendering管道,其中的缓存键在以下类中生成:
Sitecore.Mvc.Pipelines.Response.RenderRendering.GenerateCacheKey
通过重写GenerateKey(Rendering rendering, RenderRenderingArgs args)此类的方法,我可以使用成功附加原始URL site.Request.FilePath.我现在面临的问题是如何从渲染本身中提取此缓存设置?我想我需要在渲染上创建一个新的"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;
}
Run Code Online (Sandbox Code Playgroud)
小智 1
我们还需要 VaryByUrl,但是是在 WebForms 架构中 (v.6.5.0)。
对于子布局定义,我重写了 Sublayout 类以添加 VaryByUrl,类似于上面的完成方式。
假设您的 Sitecore 版本仍然使用相同的渲染参数模板,对于渲染实例,您必须创建 /sitecore/templates/System/Layout/RenderingParameters/Standard RenderingParameters 的 Source 字段中引用的类的您自己的版本/缓存/缓存。
这是“源”字段中的类引用: type=Sitecore.Shell.Applications.Layouts.DeviceEditor.CachingField,Sitecore.Client
| 归档时间: |
|
| 查看次数: |
1310 次 |
| 最近记录: |