W3C home > Mailing lists > Public > ietf-http-wg@w3.org > October to December 2003

Expires header vs Vary header

From: Julian Reschke <julian.reschke@gmx.de>
Date: Mon, 08 Dec 2003 18:48:26 +0100
Message-ID: <3FD4B96A.5020104@gmx.de>
To: ietf-http-wg@w3.org


I'm experiencing a somewhat strange behaviour involving "Vary" header, 
"Expires" header and 304 (not modified) responses.

Out server supports content that knows about its Expiry date, has strong 
Etags and indeed (potentielly) varies across a few request header 

I'm testing with Mozilla Firebird (using the excellent Live HTTP headers 

After clearing all caches, the trace shows that Mozilla is GETting the 
resource, and that the response is a 200, including "Vary" and "Expires" 
(let's say 60 seconds in the future):

HTTP/1.x 200 OK
Date: Mon, 08 Dec 2003 17:37:13 GMT
Vary: accept-encoding, accept-language, cookie, user-agent, translate
Accept-Ranges: bytes
Etag: "942-1070891632000"
Last-Modified: Mon, 08 Dec 2003 13:53:52 GMT
Expires: Mon, 08 Dec 2003 17:38:13 GMT
Content-Type: image/gif
Content-Length: 942
Server: Apache Coyote/1.0

Continueing browsing, Mozilla indeed does not attempt any additional GET 
on that resource until the advertised expiry date has passed. When this 
happens, Mozilla sends a conditional GET...:

GET .../folder.gif HTTP/1.1
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.5) 
Gecko/20031007 Firebird/0.7
Accept: image/png,image/jpeg,image/gif;q=0.2,*/*;q=0.1
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Cookie: JSESSIONID=AA0E061A3B970E4AFC1BA61B8C973572
If-Modified-Since: Mon, 08 Dec 2003 13:53:52 GMT
If-None-Match: "942-1070891632000"
Authorization: Basic cmVzY2hrZTp3Y20xMjM0


HTTP/1.x 304 Not Modified
Date: Mon, 08 Dec 2003 17:38:13 GMT
Vary: accept-encoding, accept-language, cookie, user-agent, translate
Etag: "942-1070891632000"
Expires: Mon, 08 Dec 2003 17:39:13 GMT
Server: Apache Coyote/1.0

Until now all is working as expected, however after receiving a 304 for 
the first time, Mozilla now issues the GET requests *every* time 
(instead of using the cached response for another 60 seconds).

Removing the "Vary" header from the responses "fixes" this behaviour. Am 
I missing an dependency between "Vary" and "Expires" (and/or possible 
strong ETags) I should be aware of?

Feedback appreciated,


<green/>bytes GmbH -- http://www.greenbytes.de -- tel:+492512807760
Received on Monday, 8 December 2003 12:48:29 UTC

This archive was generated by hypermail 2.4.0 : Friday, 17 January 2020 17:13:24 UTC