在ASP.NET MVC 3中为非认证用户缓存主页

4
我的网站有一个首页,我想对匿名用户缓存该页面,并将其设置为“私有”以供已验证的用户使用 (这样他们可以将其保存在自己的计算机上,而不是其他地方)。
因此,如果用户是匿名的,我希望在服务器缓存中保存页面,并在浏览器缓存中使用“Cache-control:public, max-age=60”和“Vary:Cookie”,因此,如果浏览器获得身份验证并发送cookie,浏览器不会重用之前存储的页面。
如果用户已通过身份验证,则不希望页面存储在服务器上,但是要在客户端浏览器中使用“Cache-control:private, max-age=60”。
我一直在尝试使用OutputCacheAttribute和Response.Cache的多种组合,但我无法做到正确。
最好的方法是什么?
谢谢。
1个回答

2
你可以尝试实现一个 VaryByCustom 规则,来区分匿名用户和已认证用户。这里有一个示例,应该能帮助你正确实现。

1
嗨。这是我尝试的第一步,但它没有起作用。现在我正在试图弄清楚为什么它不起作用,请查看https://dev59.com/pGox5IYBdhLWcg3wcTzr。干杯。 - vtortola
你的链接只是使用了服务器端缓存,我对客户端和下游的HTTP缓存也很感兴趣。 - vtortola
您可以这样指定代理/客户端级别的缓存:context.Response.Cache.SetCacheability(HttpCacheability.Public); - Dusda

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接