I’m experiencing the strangest behavior with Apache CentOS and WordPress. I have a simple site under development. The browser caches the header images as expected, that is until I upload new version or create a duplicate (via Yummy FTP). The original image caches every time, but as soon as it is replaced, even with the same exact version and file name, browser caching does not work anymore and it reloads on every page change. The browser is Safari.
Any ideas on what may be causing this?
Your description is not precise enough to answer this.
There are different cache mechanisms.
To answer this you would have to debug all HTTP queries that browser does and check requests and responses headers for cache control:
http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html
On Firefox it can be done via firebug, Chrome have built in developer tools. Did a quick research on Safari and it seems it is not so easy to debug HTTP with it. But flow should be very similar in every browser.
Most probably even with Images cached browser is still sending a request to check if they were changed and gets
HTTP 304: Not Modified
response from server.