Hi there,

WebKit Bug "13128: Safari not obeying cache header" changed the way non-http 
resources are cached in WebKit. A comment from Antti Koivisto mentioned that, 
aside from the RFC2616 changes, there is "one additional change that gives 
non-HTTP resources long cache lifetime. This matches existing behavior."

I have the following scenario:

<html>
<head>
        <script>
        function reloadFrameByDocumentWrite() {
        var frameDocument = 
document.getElementById('ID1').contentWindow.document;
        frameDocument.open();
        frameDocument.write("<img src='pic.png' />");
        frameDocument.close();
        }
        </script>
</head>
<body>
    <input type="button" value="Reload" onclick="reloadFrameByDocumentWrite();" 
/>
    <iframe id="ID1"></iframe>
</body>
</html>

When I load the above code in WebKit and hit "Reload", the picture is displayed 
into frame ID1. If I change the content of *pic.png* picture while the page is 
loaded in WebKit and I press "Reload" button again, the frame does not display 
the updated content of the picture from the local disk.

I took a look at the changelist 44452 and in WebCore\loader\CachedResource.cpp 
double CachedResource::freshnessLifetime() const 
{ 
        // Cache non-http resources liberally 
        if (!m_response.url().protocolInHTTPFamily()) 
                return std::numeric_limits<double>::max();

        ...
}

This means that in cases like the one described above, since the *pic.png* has 
protocol *file*, it will be cached for a long time and the new content will not 
be displayed.

This is different than Safari 4.0 beta and Safari 3.2.1 on Windows. I was 
wondering what should be the right behavior here since I was not able to find 
that in RFC 2616? FF3.5.7 works like WebKit/Chrome/Safari 4.0.5. IE8 displays 
the updated image.

Regards,
Mihnea Ovidenie
_______________________________________________
webkit-dev mailing list
webkit-dev@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev

Reply via email to