Skip to content

ATS should ignore the Expires header when there is a Cache-Control with max-age or s-maxage #7136

@bryancall

Description

@bryancall

https://tools.ietf.org/html/rfc7234#section-5.3

If a response includes a Cache-Control field with the max-age
directive (Section 5.2.2.8), a recipient MUST ignore the Expires
field. Likewise, if a response includes the s-maxage directive
(Section 5.2.2.9), a shared cache recipient MUST ignore the Expires
field. In both these cases, the value in Expires is only intended
for recipients that have not yet implemented the Cache-Control field.

08:38:02 bart:/var/www/html$ curl -D - http://127.0.0.1:81/expires.php
HTTP/1.1 200 OK
Date: Tue, 25 Aug 2020 15:38:07 GMT
Server: Apache/2.4.43 (Fedora)
X-Powered-By: PHP/7.4.9
Cache-Control: 1536000, public
Expires: Thu, 30 Jul 2020 15:18:11 GMT
Transfer-Encoding: chunked
Content-Type: text/html; charset=UTF-8

xxx
08:38:07 bart:/var/www/html$ curl -D - http://127.0.0.1:8080/expires.php
HTTP/1.1 200 OK
Date: Tue, 25 Aug 2020 15:38:09 GMT
Server: ATS/10.0.0
X-Powered-By: PHP/7.4.9
Cache-Control: 1536000, public
Expires: Thu, 30 Jul 2020 15:18:11 GMT
Content-Type: text/html; charset=UTF-8
Age: 0
Transfer-Encoding: chunked
Connection: keep-alive
Via: http/1.1 traffic_server (ApacheTrafficServer/10.0.0 [uScSsSfUpSeN:t cCSp sS])

xxx
08:38:09 bart:/var/www/html$ traffic_via 'uScSsSfUpSeN:t cCSp sS'
Via header is [uScSsSfUpSeN:t cCSp sS], Length is 22
Via Header Details:
Request headers received from client                   :simple request (not conditional)
Result of Traffic Server cache lookup for URL          :in cache, stale (a cache "MISS")
Response information received from origin server       :connection opened successfully
Result of document write-to-cache:                     :updated old cache copy
Proxy operation result                                 :served or connection opened successfully
Error codes (if any)                                   :no error
Tunnel info                                            :no tunneling
Cache Type                                             :cache
Cache Lookup Result                                    :cache hit, but expired
Parent proxy connection status                         :no parent proxy or unknown
Origin server connection status                        :connection opened successfully
08:38:37 bart:/var/www/html$ curl -D - http://127.0.0.1:8080/expires.php
HTTP/1.1 200 OK
Date: Tue, 25 Aug 2020 15:38:42 GMT
Server: ATS/10.0.0
X-Powered-By: PHP/7.4.9
Cache-Control: 1536000, public
Expires: Thu, 30 Jul 2020 15:18:11 GMT
Content-Type: text/html; charset=UTF-8
Age: 0
Transfer-Encoding: chunked
Connection: keep-alive
Via: http/1.1 traffic_server (ApacheTrafficServer/10.0.0 [uScSsSfUpSeN:t cCSp sS])

xxx
08:38:42 bart:/var/www/html$ traffic_via 'uScSsSfUpSeN:t cCSp sS'
Via header is [uScSsSfUpSeN:t cCSp sS], Length is 22
Via Header Details:
Request headers received from client                   :simple request (not conditional)
Result of Traffic Server cache lookup for URL          :in cache, stale (a cache "MISS")
Response information received from origin server       :connection opened successfully
Result of document write-to-cache:                     :updated old cache copy
Proxy operation result                                 :served or connection opened successfully
Error codes (if any)                                   :no error
Tunnel info                                            :no tunneling
Cache Type                                             :cache
Cache Lookup Result                                    :cache hit, but expired
Parent proxy connection status                         :no parent proxy or unknown
Origin server connection status                        :connection opened successfully

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions