views:

40

answers:

2

I use the following code to write cache header on *.png requests: 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);

But every time I refresh the page which contains the PNG URL, it will post to web server again. It seems that the cache header not work, and worse, it make the browser cache not work too.

I am using asp.net mvc. Can someone point me the right direction ? Thanks !

A: 

A POST will never be cached, by any browser or server. If the browser issues a POST request, then the server will execute it. You cannot cache the results. The only way to not POST is to not issue a POST.

Craig Stuntz