我通过将其放入我的 default.aspx(位于 CMS 之外)中,在启用了 Sitecore 的 ASP.NET 站点中启用了输出缓存:
<%@ OutputCache Duration="300" VaryByParam="None" %>
在我的 Web.config 中:
<setting name="DisableBrowserCaching" value="false" />
这在我直接点击我的页面时有效,如在 http://[website]/default.aspx 中,但在我浏览到根站点 http://[website]/ 时无效。在这种情况下,它总是返回 200 响应,而不是重复请求时返回 304(未修改)。
我在一个不使用 Sitecore 的网站上尝试了同样的方法,并且缓存在 IIS 7 和 Sitecore 6.4.1 下的所有实例中都有效。
如何为启用 Sitecore 的站点中的默认(无扩展)ASP.NET 页面启用输出缓存?
更新:
似乎在我的本地机器上工作(这个问题在我们的 QA 环境中),我能看到的唯一区别是我有 IIS 7.5 而不是 7.0,但相同的 web.config 和 Sitecore 实例。
另外,我创建了另一个测试页面 (http://[website] /Test/default.aspx ),它表现出相同的行为,因此受影响的不仅仅是根。
更新 2:
坏消息 - Sitecore 已确认输出缓存不受官方支持:
“Sitecore CMS 并非设计用于在 IIS 中启用用户模式或内核模式输出缓存,因此不支持其使用。”
这并不能解释为什么它有时适用于特定的 URL 和环境,我仍然希望有一个解决方法。