我正在努力解决有关缓存的IIS设置问题,以下是我的问题的简要说明:
我正在建立一个移动和非移动网站,共享相同的控制器。 IE:mysite / page将提供mysite / page.cshtml或mysite / M / page.cshtml,具体取决于设备。
这是捕获,它在我的本地和集成环境(cassiini和iis 6)中运行良好,但在另一台机器(2008r2 / iis 7.5)上,显然有一个积极的服务器端缓存策略:
相反,如果我首先使用手机重新启动服务器并访问该网站,那么我将在我的桌面上获取移动版本(仅适用于我当前访问过的网页)。
到目前为止,我尝试了两种解决方案:
从我的Web.config中禁用OutputCache:
<httpModules>
[..]
<remove name="OutputCache" />
</httpModules>
在IIS的“我的网站”的“输出缓存”中取消选中“启用输出缓存”。
让我烦恼的是我的其他服务器(iis 6.0)没有这个问题,虽然在这个服务器上启用了缓存,这让我觉得它与iis 7缓存添加有关。
我的问题很简单:如何在IIS 7.5上禁用服务器端缓存?
提前感谢您的iis灯!
对不起那些你真的猜不到那个,我扩展了RazorViewEngine(实际上我使用的是一个示例移动mvc3模板应用程序),而这个类重写了FindView,它应该考虑到useCache参数,但显然无论如何我配置IIS,它与iis7设置为true。我到处都把它设置为假。我明天会考虑适当调整该参数。
public override ViewEngineResult FindView(ControllerContext controllerContext, string viewName, string masterName, bool useCache)
感谢您的帮助,我现在已经很好地理解了IIS的所有缓存可能性;)。有趣的是,这与IIS 7.0的行为不同(IIS6和Cassiini是一致的)。
编辑:
更多信息:http://aspnet.codeplex.com/workitem/8201?PendingVoteId=8201,它与FindView的调试/发布工作有关。
这是我的确切问题:http://aspnet.codeplex.com/workitem/8201?PendingVoteId=8201
答案 0 :(得分:1)
如果您正在谈论静态类型(如图像等),可以将其添加到web.config
<staticContent>
<clientCache cacheControlMode="DisableCache"/>
</staticContent>
更新
这是link
此链接详细讲述了您想要做的事情。
答案 1 :(得分:1)
正如里克所说,你需要先对此进行分析。然而,快速测试是实现无缓存控制器,如下所述: Disable browser cache for entire ASP.NET website
答案 2 :(得分:0)
我认为你正在处理浏览器缓存。你有没有想过看到304s的流量?你可能正在追逐错误的问题。
注意:您的缓存清除解决方案必须包括客户端和服务器端。