I noticed that chrome cached the video file. I replaced it with another on the server, and chrome saved the old file from the cache (using JW flash player 5)
The request headers are as follows:
joe@joe-desktop:~$ wget -O - -S
Spider mode enabled. Check if remote file exists.
Resolving www.2xfun.de... 213.239.214.112
Connecting to www.2xfun.de|213.239.214.112|:80... connected.
HTTP request sent, awaiting response...
HTTP/1.1 200 OK
Date: Sun, 15 May 2011 20:40:56 GMT
Server: Apache
Last-Modified: Sun, 15 May 2011 20:37:59 GMT
ETag: "89b38-3bb227-4a35683b477c0"
Accept-Ranges: bytes
Content-Length: 3912231
Cache-Control: max-age=29030400, public, must-revalidate
Expires: Sun, 15 Apr 2012 20:40:56 GMT
Connection: close
Content-Type: video/mp4
Length: 3912231 (3.7M) [video/mp4]
Remote file exists.
I use mod_headers and mod_expires in apache2 as follows:
<FilesMatch "\.(flv|ico|pdf|avi|mov|ppt|doc|mp3|wmv|wav|mp4)$">
ExpiresDefault A29030400
Header append Cache-Control "public, must-revalidate"
</FilesMatch>
Did I cast a spell incorrectly or something else?
edit:
To make the use case clear: I want the files to be cached because they are quite large, and I want to conserve bandwidth. But, on the other hand, I want the files to be re-checked. Thus, the client executes the HEAD request and checks if the content has changed (what it means for), and only reselects if necessary.