Bug 7414 - Need shift-reload functionality (bypassing proxy cache)
Summary: Need shift-reload functionality (bypassing proxy cache)
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: Page Loading (show other bugs)
Version: 417.x
Hardware: Mac OS X 10.4
: P2 Enhancement
Assignee: Nobody
URL:
Keywords: InRadar
Depends on:
Blocks:
 
Reported: 2006-02-21 23:05 PST by scott
Modified: 2008-12-21 09:29 PST (History)
4 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description scott 2006-02-21 23:05:03 PST
This is not a new issue, it is one that has plagued me since the first revisions of Safari.  I am unable to pin it down as to being a web-server issue or a Safari issue.

Upload image or file via ftp to web-server.
Call that image or file to load 
Rename the file or image
Reload the same url, the image still loads, empty cache has no effect.

Opposite can happen as well
Load random image or file that is a 404 in browser
upload image to correct 404
reload, 404 error persists.

Example snips of tcp data
GET /g.gif HTTP/1.1
User-Agent: Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/417.9 
(KHTML, like Gecko) Safari/417.8
HTTP/1.1 404 OK

However, to prove the file is in fact there:
-rwx------       12343        0    12544 Feb 21 22:56 g.gif

RETR /g.gif
Packet received at 1140591688.810798

The problem seems to go away over time, I am pretty sure it is some caching issue with Safari and this web server, web* on Mac OS 9, however, I have friends who report this same behavior on other servers, that I know either run IIS or some other more modern web server.

Either way, Safari is the only browser that exhibits this, and the workaround is even more bizarre...

Open the URL in question in FireFox, "shift reload" and FireFox now shows the image, or in the opposite case, 404's the image, then a simple reload in Safari and Safari is happy again.

How can FireFox change the way Safari deals with something?  Did FireFox send some form of expiry to the server and Safari was then able to pick up on that?

Is there a "shift-reload" command in Safari I am missing?
Comment 1 Alexey Proskuryakov 2006-02-22 08:09:12 PST
Are you behind a caching HTTP proxy, by any chance? Sometimes, these are almost completely transparent, so it might be tricky to find out.
Comment 2 scott 2006-02-22 12:22:56 PST
No, I am not behind a caching proxy at all, as a matter of fact, at one point in time, I was sitting on a LAN to the server and this was still happening.
Comment 3 Alexey Proskuryakov 2006-02-22 12:56:47 PST
It is still possible that the server itself includes some sort of a proxy (Apache has mod_cache; WebSTAR has something similar, too). You are very right asking how Firefox can change the way Safari deals with something - it cannot, and it can only affect the server and/or the proxy, to the best of my knowledge.

A detailed annotated trace made with tcpdump, tcpflow or EtherPeek could perhaps help to pinpoint the problem.
Comment 4 scott 2006-02-22 13:43:31 PST
Ill see what more data I can get, though I can assure you there is no proxy on web* server, I have it fully disabled.  Should be able to get you more detailed data on this though.
Comment 5 scott 2006-02-22 15:22:34 PST
Turns out that the webserver is holding a cache of the old data, which is where this problem is coming from.  Clearing this cache on the webserver and things clear up just fine.

So, the question remains, how do you perform a "shift-reload" like what FireFox does, and what is FireFox and other browsers doing under those "super reload" cases?

The problem seems to happen on other webservers as well, so for a developer, a simple "super-reload" would work to alleviate this.
Comment 6 Alexey Proskuryakov 2006-02-23 00:41:51 PST
The related headers are:

1) Firefox, reload:
If-Modified-Since: _date_
If-None-Match: _tag_
Cache-Control: <max-age=0>

2) Firefox, shift-reload:
Pragma: no-cache
Cache-control: no-cache

3) Safari, reload:
Doesn't send any conditional or cache control headers.

4) I don't have WinIE here, but Google says it also has shift-refresh; we need to look at its headers, too.

  So far, sounds like this may require changes to both open-source WebKit and closed source Safari. Could you please also report this to <http://bugreport.apple.com>, mentioning this bug, and then post that problem number here?
Comment 7 scott 2006-02-23 09:49:27 PST
Done, and thanks, the bug report id is 4455858
Comment 8 David Kilzer (:ddkilzer) 2006-02-23 12:20:41 PST
<rdar://problem/4455858>
Comment 9 scott 2006-02-23 20:31:49 PST
Will this report be updated as it progresses, or should I watch the rdar report?
Comment 10 Alexey Proskuryakov 2006-02-23 23:41:50 PST
Radar is only accessible to Apple employees, so this mostly depends on who gets to fixing the WebKit part of the problem first. And changes to Safari UI can only be requested via Radar.
Comment 11 Alexey Proskuryakov 2006-05-02 04:43:53 PDT
Turns out we've already had bug 5499 filed for plain reload headers; retargeting this one to be specifically about shift-reload.
Comment 12 Antti Koivisto 2008-12-21 09:24:16 PST
WebCore and (at least) Mac WebKit has shift-reload support now (done under bug 17998). The rest is application level stuff and does not belong here.
Comment 13 Antti Koivisto 2008-12-21 09:29:50 PST
We have <rdar://problem/6451745> to cover Windows WebKit. Other archs should file separate bugs if they want the functionality.