Quoi de neuf dans le monde du cache HTTP
What's new in the HTTP cache world
What's new in the HTTP cache world
Sylvain Combraque
Creator of Souin HTTP cache
Træfik helper/ambassador
Cache-handler maintainer
Open-source contributor
@Darkweak
@Darkweak_dev
Disclaimer
✊ Tech is political
💬 Ask during the conference
Join onestlatech in 🇫🇷
The chaos between the providers
HTTP/1.0
📉 low description
📉 low customization
😮💨 lot of own implementations
June 1999
RFC-2616
HTTP/1.1
The WWW beginnings
📚 Grammar
🕵️♂️ Resource identifier
🔗 URI
🔤 Content-Encoding
RFC-2616
13.x: Caching in HTTP
Caching would be useless if it did not significantly improve performance
RFC-2616
13.x: Caching in HTTP
If a stored response is not "fresh enough" [...] the cache MAY still return the response with the appropriate Warning header
RFC-2616
Cache-Control commons
🙅♂️ no-cache
✋ no-store
⏱️ max-age
🫡 no-transform
RFC-2616
Cache-Control HTTP request
⏱️ max-stale
🤷♂️ min-fresh
💁♂️ only-if-cached
RFC-2616
🔓 public
🔐 private
🤙 must-revalidate
🤙 proxy-revalidate
⏱️ s-maxage
Cache-Control HTTP response
RFC-2616
community="UCI"
only-if-my-case-match="that-should"
Cache-Control cache-extension
August 2001
ESI Language
ESI tags
ESI tags
<esi:include
src="http://example.com/1.html"
alt="http://bak.example.com/2.html"
onerror="continue"
/>
ESI tags
<esi:try>
<esi:attempt>
<esi:comment text="Include an ad"/>
<esi:include src="http://www.example.com/ad1.html"/>
</esi:attempt>
<esi:except>
<esi:comment text="Just write some HTML instead"/>
<a href=www.akamai.com>www.example.com</a>
</esi:except>
</esi:try>
ESI tags
<esi:vars>
<img
src="http://www.example.com/$(HTTP_COOKIE{type})/hello.gif"
alt="$(HTTP_COOKIE{logo_name})"
/>
</esi:vars>
ESI tags
<img
src="http://www.example.com/human/hello.gif"
alt="My human GIF"
/>
ESI tags
ESI tags
June 2014
RFC-7234
HTTP/1.1 Caching
RFC-7234
HTTP response header Age
Age: 10
Age: -5
RFC-7234
Invalidation
RFC-7234
Cache-Control HTTP response
🤘 stale-while-revalidate
2015
HTTP/2
🏎💨
HTTP/2
HTTP/2
HTTP/2
June 2022
RFC-9211 & RFC-9213
The Cache-Status & Target-Cache-Control HTTP response Header fields
RFC-9211
Cache-Status directives
💥 hit
📩 fwd
ℹ️ fwd-status
⏱️ ttl
👌 stored
🙏 collapsed
🔑 key
🤓 detail
RFC-9211
Cache-Status directives
Cache-Status: Your-Cache-Server; hit; ttl=3; key=your-pattern
Cache-Status: Your-Cache-Server; fwd=uri-miss; fwd-status=304
Cache-Status: Your-Cache-Server; fwd=uri-miss; detail=STORAGE-UNREACHABLE
RFC-9213
Target-Cache-Control
CDN
Varnish
Caddy
Upstream
RFC-9213
Target-Cache-Control
CDN
Varnish
Caddy
Upstream
RFC-9213
Target-Cache-Control
CDN
Varnish
Caddy
Upstream
Cache-Control: no-store
CDN-Cache-Control: public, max-age=120, s-maxage=120
Varnish-Cache-Control: public, max-age=360, s-maxage=360
Caddy-Cache-Control: public, max-age=3600, s-maxage=3600
RFC-9213
Target-Cache-Control
CDN
Varnish
Caddy
Upstream
Cache-Control: no-store
CDN-Cache-Control: public, max-age=120, s-maxage=120
Varnish-Cache-Control: public, max-age=360, s-maxage=360
Caddy-Cache-Control: public, max-age=3600, s-maxage=3600
3600s
RFC-9213
Target-Cache-Control
CDN
Varnish
Caddy
Upstream
Cache-Control: no-store
CDN-Cache-Control: public, max-age=120, s-maxage=120
Varnish-Cache-Control: public, max-age=360, s-maxage=360
Caddy-Cache-Control: public, max-age=3600, s-maxage=3600
360s
RFC-9213
Target-Cache-Control
CDN
Varnish
Caddy
Upstream
Cache-Control: no-store
CDN-Cache-Control: public, max-age=120, s-maxage=120
Varnish-Cache-Control: public, max-age=360, s-maxage=360
Caddy-Cache-Control: public, max-age=3600, s-maxage=3600
120s
RFC-9213
Target-Cache-Control
Cache-Control: no-store
CDN-Cache-Control: public, max-age=120, s-maxage=120
Varnish-Cache-Control: public, max-age=360, s-maxage=360
Caddy-Cache-Control: public, max-age=3600, s-maxage=3600
Client
no-cache
What about the future...
Probably in June
Surrogate-keys
First group
Second group
Third group
key 1
key 3
key 564
key 90
key ABC
key 3
key 789
key 1
key 789
Surrogate-keys
So much implementation
Prepare an RFC to make it standard
Resources
Resources
https://github.com/http-tests/cache-tests
https://cache-tests.fyi
Resources
https://www.rfc-editor.org
👇That's the French paracetamol👇
Lazy to manage an HTTP cache?
Thank you for your attention
Give your feedbacks👉
Quoi de neuf dans le monde du cache HTTP
By darkweak
Quoi de neuf dans le monde du cache HTTP
- 243