用于SSL +非SSL子布局的Sitecore缓存

时间:2011-05-13 13:45:30

标签: caching ssl sitecore

我有一个子布局输出数据的问题,在SSL和非SSL请求之间应该有所不同。

如果您创建子布局并在后面的代码中进行复制,则渲染URL。然后,如果您通过sitecore界面将此子布局添加到页面,例如:presentation> details etc并设置缓存并将所有缓存变量设置为on。你发布了等等,所以页面现在是可见的(如果你通过代码中的子布局控件直接调用控件,它的行为也一样)。

如果您以非ssl模式(http:// URL)执行此页面,您将获得一个URL,例如; http://URL ... 然后,如果您以ssl模式(https:// URL)执行此页面,您的输出仍然是http://URL ...

所以有人知道如何获得这个,所以我们缓存两个实例。

此致 克里斯

2 个答案:

答案 0 :(得分:1)

您可以使用现有的 VaryByParm 功能,通过以完整的请求网址(包括方案)以编程方式设置子布局的缓存密钥来创建VaryByUrl行为。我相信这将与Mark Ursino在此回复中描述的过程相同:Customizing sublayout caching in Sitecore

作为旁注,如果在具有语言前缀的多语言网站中,请注意使用Sitecore.Context.RawUrl将通过StripLanguage preProcessRequest的操作为您提供带有语言前缀剥离的请求网址。管道步骤。

答案 1 :(得分:0)

我认为我发现了您的问题 - 您正在为图像输出绝对网址,并且根据第一次请求是否使用了SSL,图片的SSL网址可能包含也可能不包含在缓存输出中

我的第一个建议是尽可能禁用绝对URL。你需要它们吗?

我的备份是指向Web.config中的renderingControls配置。如果我们在这里谈论子布局,您可以潜在地子类化子布局,并为子布局渲染创建一个新工厂。当您子类化子布局时,如果请求是ssl,则覆盖其GetCacheKey方法以添加标志...

//如果请求是ssl return base.GetCacheKey()+“#ssl”;

公平警告我从未这样做,只是根据可用的Sitecore配置和API提出有根据的建议。

祝你好运。