下面两行之间有什么不同? :
Response.Cache.SetCacheability(HttpCacheability.NoCache);
和
Response.CacheControl = "no-cache";
答案 0 :(得分:5)
如果您仔细阅读文档,通常没有任何区别。
但是,由于前者使用了Cache对象(在Asp.Net 4或Asp.Net MVC中为HttpCachePolicyBase
),因此它提供:
a)对响应对象的缓存策略的抽象,可用于测试场景
b)如果由于某种原因而扩展HTTP规范意味着NoCache
需要更多响应中的标头,或者对响应进行其他调整,则可能出现未来验证。
它还允许根据客户端的功能透明地调整“不可缓存性”的概念;这在HTTP确实发展的情况下很重要 - 但在HTTP 1.0和1.1客户端的情况下也是如此(1.0和1.1之间的差异在HTTP 1.0 vs 1.1中得到了很好的总结)。
在第二行中,你负责如何应用no-cache指令(使用一个有点神奇的字符串) - 被授予,它仍然是可测试的,但如果HTTP规范确实发生了变化,那么你必须自己编写代码
最终,使用Response.Cache
对象比直接编写标题更好的设计(例如,对于ETag和If-Not-Modified-自处理以来它实际上是自己的。)
答案 1 :(得分:1)
仅保留Response.CacheControl
属性以实现向后兼容性。为其分配字符串时,它将在Response.Cache
对象中设置相应的值。