[webkit-dev] Safari & Correctly Setting No-Cache via HTML

Brian Campbell lambda at mac.com
Thu Nov 1 19:19:56 PDT 2007


On Nov 1, 2007, at 8:23 PM, Richard Glaser wrote:

> We found this info...
>
>> Safari supports server-side caching directives... not the meta tag
>>
>> Check out number five on my FAQ  -http://developer.apple.com/internet/safari/faq.html#anchor5
>
> Why?
>
> Why does only support server-side caching directives when it appears  
> other browsers like FireFox, IE support meta tag. Seems like this  
> will cause many backend systems to not support Safari since it  
> market share is 5% and probably many assume it works since it works  
> in Firefox & IE and probably can't justify development development  
> time for it.

I am not a Safari developer, and only a very occasional WebKit  
contributor, so I can't answer this directly, but I seem to recall  
that Safari generally trusts HTTP headers over HTML META tags. One  
reason may be that, according to the HTML 4.01 spec, the *web server*  
is supposed to translate META HTTP-EQUIV tags to HTTP headers, not the  
client.

Caching directives don't matter only to the browser, they matter to  
any caching proxy server between the user and developer of the  
application. Many caching proxy servers may only ever look at the  
headers, never looking at the content, because they are designed to  
support the HTTP protocol, not HTML. So if you are having trouble with  
the META tags in Safari, it means that you might also have trouble  
with aggressive caching proxy servers (I happen to be behind one at  
work, so I've really had to make sure that things like our auto- 
updater weren't thwarted by the caching proxy server). If you're just  
doing this for kiosks, you might be able to avoid that issue, but in  
general, you can't trust META HTTP-EQUIV tags will be interpreted  
properly no matter what browser you're using, because the proxies may  
cache even if the browser doesn't.

It should be possible in whatever tool you're using to set HTTP  
headers on the content thats going out. If you can't set it  
programmatically in the set of pages you want to, most web servers  
will let you specify headers on a per-directory basis in their  
configuration. If you can't do even that, you could put the webserver  
behind a simple proxy that just replaces the headers you are  
interested in. Apache and lighttpd are both free webservers that can  
be configured in a proxying mode that will rewrite the HTTP headers  
appropriately.

> We probably will file a bug (feature request) on this.


More information about the webkit-dev mailing list