在ASP.NET环境下,Cache-Control中的值是不是在IIS中可以设置?
或者使用web.config设置?Response.CacheControl可以设置HttpCacheability的枚举,但是在这些枚举中只有如下几种:
NoCache,Private,Server,ServerAndNoCache,Public,ServerAndPrivate。
而根据W3C中的定义,有很多种呢。如下:
cache-response-directive =
           "public"                               ; 
         | "private" [ "=" <"> 1#field-name <"> ] ;
         | "no-cache" [ "=" <"> 1#field-name <"> ]; 
         | "no-store"                             ; 
         | "no-transform"                         ; 
         | "must-revalidate"                      ; 
         | "proxy-revalidate"                     ; 
         | "max-age" "=" delta-seconds            ; 
         | "s-maxage" "=" delta-seconds           ; 
         | cache-extension                        ; 还有就是客户端的Request.Header中也可以设置Cache-Control吗??它和Response的Cache-Control有什么区别?还有就是Http Request头是不是由浏览器发出的,我们的asp.net代码是不能更改的啊??就这些问题,高手指教。

解决方案 »

  1.   

    缓存应该有服务端缓存和客户端缓存两大类
    另外还分无条件缓存(通过过期时间控制)和有条件缓存(通过LastModified或者ETag是否变化控制)Response 的 Cache-Control 是控制浏览器缓存行为的,即客户端缓存。
    Request 的 Cache-Control 应该没什么用。
    (也可能是我所知甚少,但还没看见客户端通过这个控制服务端的)结合Cache-Control 控制的还有 Expires 头(过期时间)
    另外,asp.net控制缓存可以通过 AspNetCacheProfile 特性结合Web.config中配置caching节控制。
      

  2.   


    Http Request头由浏览器发出的,我们的asp.net代码是不是不能控制的。??