Davind, IMHO the problem is hidden in the headers...:
> [EMAIL PROTECTED]:~$ head -n 12 picture.2 > HTTP/1.1 200 OK > Date: Fri, 01 Jul 2005 23:36:53 GMT > Server: Apache/1.3.33 (Debian GNU/Linux) mod_perl/1.29 > Last-Modified: Wed, 04 Jun 2003 06:53:10 GMT > ETag: "1064b-515f-3edd9756;42c4b3fd" > "picture.3" [1] [EMAIL PROTECTED]:~$ head -n 12 picture.3 > HTTP/1.1 200 OK > Date: Fri, 01 Jul 2005 23:40:47 GMT > Server: Apache/1.3.33 (Debian GNU/Linux) mod_perl/1.29 > Last-Modified: Wed, 04 Jun 2003 06:53:10 GMT > ETag: "1064b-515f-3edd9756;42c4b3fd" You conclude somehwere that IE is not honouring the Expires header, but that need not be completely true. The only thing that header is telling IE is that it may not _unconditionally_ reuse the same data the next time it is needed. And most probably IE complies to it. Since the Expires header tells IE that the data is "expired" it will request the image again. But, different to wget, it will provide Apache with the Etag and timestamp of the image it has downloaded the last time. Apache then will reply a 304 meaning 'the data you have is the same as I have'. This response is based on ETag, URI and timestamp of the downloaded image. As you can see in the result of both requests (see your data) that information is the same both times. What you can try is to update the Last-Modified header on each request. Bear in mind that this won't work for requests that are made within the same second. To probably state the obvious: it is necessary that you set the header to the timestamp of the request, not to the timestamp of the underlying image! HTH, Frank