【问题标题】:What is different between HttpCacheability.NoCache and Response.CacheControl = "no-cache"?HttpCacheability.NoCache 和 Response.CacheControl = "no-cache" 有什么不同?
【发布时间】:2012-05-18 12:06:25
【问题描述】:

下面两行有什么不同? :

Response.Cache.SetCacheability(HttpCacheability.NoCache);

 Response.CacheControl = "no-cache";

【问题讨论】:

    标签: c# asp.net


    【解决方案1】:

    如果你通读文档,一般来说,没有任何区别。

    但是,由于前者使用 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 对象比直接编写标头代码更好(例如,对于 ETags 和 If-Not-Modified-Since 处理,它确实有自己的特色)。

    【讨论】:

      【解决方案2】:

      维护Response.CacheControl 属性只是为了向后兼容。当你给它分配一个字符串时,它会在Response.Cache对象中设置相应的值。

      【讨论】:

        猜你喜欢
        • 2011-11-26
        • 2018-10-06
        • 2010-10-26
        • 2012-11-03
        • 2022-11-17
        • 1970-01-01
        • 1970-01-01
        • 2010-11-09
        • 2021-11-22
        相关资源
        最近更新 更多