asp.net MVC的缓存和Firefox的缓存如何工作?

时间:2010-08-03 11:15:25

标签: asp.net asp.net-mvc firefox caching

我使用以下代码在* .png请求上写缓存标头:             response.Buffer = false;             response.BufferOutput = false;

        // Emit content type and encoding based on the file extension and 
        // whether the response is compressed
        response.ContentType = MimeMapping.GetMimeMapping(physicalFilePath);
        if (mode != ResponseCompressionType.None) 
            response.AppendHeader("Content-Encoding", mode.ToString().ToLower());
        response.AppendHeader("Content-Length", count.ToString());

        // Emit proper cache headers that will cache the response in browser's 
        // cache for the default cache duration
        response.Cache.SetCacheability(HttpCacheability.Public);
        response.Cache.AppendCacheExtension("must-revalidate, proxy-revalidate");
        response.Cache.SetMaxAge(DEFAULT_CACHE_DURATION);
        response.Cache.SetExpires(DateTime.Now.Add(DEFAULT_CACHE_DURATION));
        response.Cache.SetLastModified(lastModified);

但每次刷新包含PNG URL的页面时,它都会再次发布到Web服务器。似乎缓存标头不起作用,更糟糕的是,它使浏览器缓存也不起作用。

我正在使用asp.net mvc。 有人能指出我正确的方向吗?谢谢!

2 个答案:

答案 0 :(得分:0)

任何浏览器或服务器都会POST 永远不会缓存。如果浏览器发出POST请求,则服务器执行它。您无法缓存结果。不POST的唯一方法是不发出POST

答案 1 :(得分:0)