如何在Sitecore中设置响应头的Cache-Control?

时间:2012-04-16 01:59:38

标签: sitecore sitecore6

默认情况下,Sitecore似乎不会缓存页面。在web.config中,设置此

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

并创建管道处理器

page.Response.Cache.SetExpires(DateTime.Now.AddSeconds(60));
page.Response.Cache.SetCacheability(HttpCacheability.Public); 

但它不起作用,响应头保持no-cache。顺便说一句,我在renderLayout中添加了管道,有谁知道?谢谢!

2 个答案:

答案 0 :(得分:3)

我尝试通过先将DisableBrowserCaching设置为true来重现此问题。这确实会产生一个无缓存标头。

然后我将其设置为false并重新加载页面,并且no-cache标头消失了。没有必要做任何其他事情。

如果要设置到期标头,则应在IIS中的HTTP响应标头功能中执行此操作。

答案 1 :(得分:1)

Sitecore在内容呈现为HTML之前有7层缓存。您可以在呈现内容之前控制每次缓存。但默认情况下,no-cache确实是真的。

这是因为Sitecore中的页面是动态的。它们根据当前情况改变布局和内容。特别是如果您使用设备(http://briancaos.wordpress.com/2012/04/12/identifying-mobile-devices-in-sitecore/)并且在使用Sitecore DMS时,每个设备和用户的内容呈现方式不同。

如果您构建自己的浏览器缓存机制,请确保您只在包含静态内容的网页上执行此操作。

相关问题