2

我通过将其放入我的 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 和环境,我仍然希望有一个解决方法。

4

3 回答 3

1

我做了快速测试,看起来将DisableBrowserCaching设置为 false 并将OutputCache指令添加到 aspx 布局文件工作正常。

对,响应码是200 OK,但是页面是从浏览器的缓存中获取的(不是从服务器获取的)。响应代码304表示有对服务器的调用,并且服务器回答没有任何更改。

您能否再次检查页面的代码是否在服务器端执行?

于 2012-05-10T20:31:23.323 回答
-1

如果使用 sitecore,您需要将该指令放入每个布局 (.aspx) 文件中,以便演示设置始终是这些布局之一。

<%@ OutputCache Duration="300" VaryByParam="None" %> 

如果您的主页使用不同的布局减去指令,它可能会解释这种行为。

除此之外,使用 Sitecore 的内置缓存方法可能会更好。

于 2012-05-11T12:56:43.143 回答
-2

您需要在 web.config 中的公共站点上启用缓存:

<Sites>
  <site name="website" cacheHtml="true" ... />

通常输出缓存在组件级别工作,并在演示文稿的 Sitecore 中配置。

于 2012-05-11T07:11:13.393 回答