昨天关于asp.net的输出缓存(webforms)有一个奇怪的问题。我们使用页面级缓存(不是部分缓存)用于多语言站点(语言是通过查询字符串键确定的),出于某种目的,缓存停止了对某些语言的工作。我跟踪Global.asax文件的GetVaryByCustomString
方法,但它没有用。我将在答案中提供更多细节......
答案 0 :(得分:1)
也许您需要将Cookie上的Shareable属性设置为true?
如果给定的HttpResponse包含一个或多个出站cookie Shareable设置为false(默认值),输出缓存将是 因为回应受到压制。这可以防止包含的cookie 可能敏感的信息被缓存在响应中 并发送给多个客户。允许包含cookie的响应 要缓存,请为响应正常配置缓存,例如 使用OutputCache指令或MVC的[OutputCache]属性,和 设置所有出站cookie以将Shareable设置为true。
https://msdn.microsoft.com/en-us/library/system.web.httpcookie.shareable(v=vs.110).aspx
答案 1 :(得分:0)
感谢颠覆,我跟踪了最近的提交。我们建立了一种机制,允许特定用户使用cookie而不是会话变量来查看尚未发布的语言。这是问题的原因。如果请求使用的语言不是默认语言,则此机制会检查是否应允许用户查看页面。恕我直言,如果你修改响应的cookie集合,asp.net会禁用该请求的outputcache。我测试了它,如果你向响应添加一个cookie,它确实会禁用缓存。