我注意到每次我们通过以下方式更改响应Cookie:
HttpContext.Response.Cookies.Add(myCookie)
标题变为:
Cache-Control: public, no-cache="Set-Cookie"
和输出缓存无效。
这非常烦人,我想知道是否有任何人在输出缓存时注意到类似的问题。
答案 0 :(得分:1)
您可以随时切换到使用服务器端缓存模型,例如System.Web.Caching.Cache
或System.Runtime.Caching.MemoryCache
,它们将共享用户之间的对象缓存,同时仍允许与浏览器进行通信。
坦率地说,这个服务器端是我使用过的第一个缓存模型。我最近才开始使用输出缓存,相比之下我发现它非常有限。它的唯一优点是它在某些情况下在客户端缓存页面,并且它缓存内容而不是生成内容的数据(节省一些CPU周期)。它的主要缺点是你必须在某些条件下禁用它,例如在身份验证或写cookie期间。您永远不必禁用服务器端缓存 - 甚至不用于应用程序池回收 - 因为它不会妨碍与浏览器的通信。
对于两个方面的优点,您可以结合使用这两种方法,以便在生成视图时,您不希望多次执行的后端进程提供缓存数据。那么在大多数情况下你会有客户端缓存,并且在更新cookie时会依赖服务器端缓存。使用这种方法可能需要更多的内存,但在您的情况下,这种权衡可能是值得的。