William JOYE writes:
I have notified that every time on my web page one picture is missing (with IE and Netscape). When I refresh the page there is another picture missing and the first is OK. After another refresh, the first is missing and the second is OK. And so on...
I use Apache and Zope 2.1.6 under Linux. In the Apache log, I have notified that http code is always 304 but when pictures are missing in web page the transferred size is '-' and no '0'. Interesting!
Recently, I tried to locate a very similar (though not that well reproducible) problem. It may well be the same problem. My problem really confused me: Netscape showed a broken image for each "reload". When I verified the Zope result with an httplib application (this is a Python module to generate HTTP request), I got a perfect 304 response. No hint whatsoever on any Zope problem. Print statements in "OFS.Image.index_html" demonstrated that Zope received a request with an "If-Modified-Since" header and that it decided that it has no newer image. Thus, it responded with status 304. This is correct. When I did a forced reload (i.e. Shift-Reload), the image was shown correctly. From then on, a normal reload showed the image correctly, too. The forced reload leads to a request without "If-Modified-Since". For such a request, Zope returns the image in a standard status 200 response. I can only make some sense of this, when I assume that somehow Netscape has associated the image with the broken image in its cache. I was determined to track this problem down at home. However, I was unable to reproduce it. This is to be expected when the problem has to do with the browser cache. Of cause, it is different at home than at work. However, many people report similar problems. So, probably, Zope sometimes does something strange with images that confuses browsers, maybe let them associate an image permanently with a broken image in their cache. Because the behaviour you reported seems to be reproducible, we may have a change to determine the cause. If you are willing to track this problem down, I may give some hints about instrumentation and maybe debugging. Dieter