在启用了 Sitecore 的网站中为默认 ASPX 页面启用输出缓存 ASP.NET



我正在启用 Sitecore 的 ASP.NET 站点中启用输出缓存,方法是将其置于默认值.aspx(位于 CMS 外部(:

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

在我的 Web.config 中:

<setting name="DisableBrowserCaching" value="false" />

当我直接点击我的页面时,这有效,如 http://[网站]/默认.aspx,但当我浏览到根站点 http://[网站]/时则不行。 在这种情况下,它始终返回 200 响应,而不是重复请求时返回 304(未修改(。

我在不使用 Sitecore 的网站中尝试过相同的方法,缓存在 IIS 7 和 Sitecore 6.4.1 下的所有实例中都有效。

如何在启用了 Sitecore 的网站中为默认(无扩展名(ASP.NET 页面启用输出缓存?

更新:
似乎在我的本地计算机上工作(此问题在我们的 QA 环境中(,我可以看到的唯一区别是我使用的是 IIS 7.5 而不是 7.0,但使用相同的 web.config 和 Sitecore 实例。

此外,我还创建了另一个测试页面(http://[网站]/Test/default.aspx(,它表现出相同的行为,因此受影响的不仅仅是根。

更新 2:
坏消息 - Sitecore 已确认输出缓存不受官方支持:

"Sitecore CMS 并非设计用于在 IIS 中启用的用户模式或内核模式输出缓存,并且不支持其使用。">

这并不能解释为什么它有时适用于特定的 URL 和环境,我仍然希望有解决方法。

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

是的,

响应代码是 200 OK,但页面取自浏览器的缓存(而不是来自服务器(。响应代码 304 表示有人调用服务器,服务器应答说没有更改任何内容。

你能仔细检查页面的代码是否在服务器端执行吗?

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

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

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

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

您需要

在 web.config 中的公共网站上启用缓存:

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

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

最新更新