这是关于应用程序请求路由和dynamic禁用磁盘caching某些请求(其中请求来自已authentication的用户;他们是否通过身份validation可以由自定义代码决定)。
在我的设置中,有一台运行ARR的服务器,将请求分派到另一台服务器上的ASP.NET MVC站点。 该站点使用表单身份validation(有时是HTTP基本身份validation),因此身份validation发生在MVC站点上,而不是ARR中:基本上,当用户validation站点时,会创build一个表单身份validationcookie。
我想在ARR中发生以下情况:
如何为这个场景设置cachingconfiguration规则? 我已经尝试了多种方式:
先谢谢你!
我从IIS论坛交叉发布这个消息,因为没有人回答。
这就是我解决它的方法。
我们必须牢记以下的前提:
最大的想法是更改请求的URL,或者更确切地说,根据用户是否进行身份validation,使用IIS URL重写进行重写。 未经身份validation的用户将获得与eg / my-page一起提供的所有页面?authenticated = false和经过身份validation的用/ my-page?authenticated = true的页面。 只有匿名用户才会caching页面,所以ARR不会为经过身份validation的用户find任何匹配的caching条目。 因此,第三点就解决了。 缺点是附加到URL的查询string可能出现在HTML正文中,应使用IIS URL重写将其删除。
要指示ARR不caching当前请求,请将ARR_CACHE_CONTROL_OVERRIDE服务器variables设置为“1,no-cache”(您可以通过重写规则执行此操作)。
您可以检测用户是否通过IIS URL重写IRewriteProvider进行身份validation(请参阅教程 ),即您可以使用此类提供程序的输出为经过身份validation的用户和匿名用户重新编写URL。
希望能帮助别人。
configurationcaching控制只适用于HTTP / 1.1,为了禁止旧IE浏览器的caching,你需要configuration
以下文章提供了更多详细信息: 禁用ARR中的caching