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
![](https://s3.amazonaws.com/media-p.slid.es/uploads/835108/images/10556492/6a252a9a4d8f2c3583c40ca22442caa3a23bfdebb799e3dfdace4f3400b1833a-rimg-w960-h502-gmir.png)
Sylvain Combraque
Creator of Souin HTTP cache
Træfik helper/ambassador
Cache-handler maintainer
Open-source contributor
@Darkweak
![](https://s3.amazonaws.com/media-p.slid.es/uploads/835108/images/5585364/1024px-Octicons-mark-github.svg.png)
@Darkweak_dev
![](https://s3.amazonaws.com/media-p.slid.es/uploads/835108/images/5593136/twitter.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/835108/images/6947481/ZVbOcszq_400x400.jpg)
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
![](https://s3.amazonaws.com/media-p.slid.es/uploads/835108/images/10460886/78f0f50285dd11bef4946bc47283e49281-pills-lede.jpg.webp)
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
![](https://s3.amazonaws.com/media-p.slid.es/uploads/835108/images/10460949/Google_Images_2015_logo.svg.png)
ESI tags
![](https://s3.amazonaws.com/media-p.slid.es/uploads/835108/images/10090131/esi.png)
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
![](https://s3.amazonaws.com/media-p.slid.es/uploads/835108/images/10283077/5501287.jpg)
ESI tags
![](https://s3.amazonaws.com/media-p.slid.es/uploads/835108/images/10330413/exemple-esi-transformed.png)
June 2014
RFC-7234
HTTP/1.1 Caching
![](https://s3.amazonaws.com/media-p.slid.es/uploads/835108/images/10093537/Link_Hyrule_Warriors.webp)
RFC-7234
HTTP response header Age
Age: 10
Age: -5
RFC-7234
Invalidation
![](https://s3.amazonaws.com/media-p.slid.es/uploads/835108/images/9352249/Screenshot_2022-02-20_at_23.40.48.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/835108/images/9352248/Screenshot_2022-02-20_at_23.40.22.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/835108/images/9352247/Screenshot_2022-02-20_at_23.39.57.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/835108/images/9352246/Screenshot_2022-02-20_at_23.39.26.png)
RFC-7234
Cache-Control HTTP response
🤘 stale-while-revalidate
2015
HTTP/2
🏎💨
HTTP/2
![](https://s3.amazonaws.com/media-p.slid.es/uploads/835108/images/10331264/http2.jpg)
HTTP/2
![](https://s3.amazonaws.com/media-p.slid.es/uploads/835108/images/10331266/GawCa.png)
HTTP/2
![](https://s3.amazonaws.com/media-p.slid.es/uploads/835108/images/10331268/uKROC.png)
June 2022
RFC-9211 & RFC-9213
The Cache-Status & Target-Cache-Control HTTP response Header fields
![](https://s3.amazonaws.com/media-p.slid.es/uploads/835108/images/10330788/IMG_3496.png)
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...
![](https://s3.amazonaws.com/media-p.slid.es/uploads/835108/images/10556332/LSJuMmBtIichijl.png)
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
![](https://s3.amazonaws.com/media-p.slid.es/uploads/835108/images/5613957/1200px-Logo_Cloudflare.svg.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/835108/images/9000143/pasted-from-clipboard.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/835108/images/9000145/pasted-from-clipboard.png)
So much implementation
Prepare an RFC to make it standard
![](https://s3.amazonaws.com/media-p.slid.es/uploads/835108/images/10556392/Screenshot_2023-06-16_at_10.10.03.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/835108/images/10556398/Screenshot_2023-06-16_at_10.11.13.png)
Resources
Resources
https://github.com/http-tests/cache-tests
https://cache-tests.fyi
![](https://s3.amazonaws.com/media-p.slid.es/uploads/835108/images/10311988/Capture_d_écran_2023-03-16_à_14.54.41.png)
Resources
https://www.rfc-editor.org
![](https://s3.amazonaws.com/media-p.slid.es/uploads/835108/images/9917891/doliprane-tabs-1000-mg-8-comprimes.jpg-2.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/835108/images/9917891/doliprane-tabs-1000-mg-8-comprimes.jpg-2.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/835108/images/9917891/doliprane-tabs-1000-mg-8-comprimes.jpg-2.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/835108/images/9917891/doliprane-tabs-1000-mg-8-comprimes.jpg-2.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/835108/images/9917891/doliprane-tabs-1000-mg-8-comprimes.jpg-2.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/835108/images/9917891/doliprane-tabs-1000-mg-8-comprimes.jpg-2.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/835108/images/9917891/doliprane-tabs-1000-mg-8-comprimes.jpg-2.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/835108/images/9917891/doliprane-tabs-1000-mg-8-comprimes.jpg-2.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/835108/images/9917891/doliprane-tabs-1000-mg-8-comprimes.jpg-2.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/835108/images/9917891/doliprane-tabs-1000-mg-8-comprimes.jpg-2.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/835108/images/9917891/doliprane-tabs-1000-mg-8-comprimes.jpg-2.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/835108/images/9917891/doliprane-tabs-1000-mg-8-comprimes.jpg-2.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/835108/images/9917891/doliprane-tabs-1000-mg-8-comprimes.jpg-2.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/835108/images/9917891/doliprane-tabs-1000-mg-8-comprimes.jpg-2.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/835108/images/9917891/doliprane-tabs-1000-mg-8-comprimes.jpg-2.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/835108/images/9917891/doliprane-tabs-1000-mg-8-comprimes.jpg-2.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/835108/images/9917891/doliprane-tabs-1000-mg-8-comprimes.jpg-2.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/835108/images/9917891/doliprane-tabs-1000-mg-8-comprimes.jpg-2.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/835108/images/9917891/doliprane-tabs-1000-mg-8-comprimes.jpg-2.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/835108/images/9917891/doliprane-tabs-1000-mg-8-comprimes.jpg-2.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/835108/images/9917891/doliprane-tabs-1000-mg-8-comprimes.jpg-2.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/835108/images/9917891/doliprane-tabs-1000-mg-8-comprimes.jpg-2.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/835108/images/9917891/doliprane-tabs-1000-mg-8-comprimes.jpg-2.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/835108/images/9917891/doliprane-tabs-1000-mg-8-comprimes.jpg-2.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/835108/images/9917891/doliprane-tabs-1000-mg-8-comprimes.jpg-2.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/835108/images/9917891/doliprane-tabs-1000-mg-8-comprimes.jpg-2.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/835108/images/9917891/doliprane-tabs-1000-mg-8-comprimes.jpg-2.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/835108/images/9917891/doliprane-tabs-1000-mg-8-comprimes.jpg-2.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/835108/images/9917891/doliprane-tabs-1000-mg-8-comprimes.jpg-2.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/835108/images/9917891/doliprane-tabs-1000-mg-8-comprimes.jpg-2.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/835108/images/9917891/doliprane-tabs-1000-mg-8-comprimes.jpg-2.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/835108/images/9917891/doliprane-tabs-1000-mg-8-comprimes.jpg-2.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/835108/images/9917891/doliprane-tabs-1000-mg-8-comprimes.jpg-2.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/835108/images/9917891/doliprane-tabs-1000-mg-8-comprimes.jpg-2.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/835108/images/9917891/doliprane-tabs-1000-mg-8-comprimes.jpg-2.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/835108/images/9917891/doliprane-tabs-1000-mg-8-comprimes.jpg-2.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/835108/images/9917891/doliprane-tabs-1000-mg-8-comprimes.jpg-2.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/835108/images/9917891/doliprane-tabs-1000-mg-8-comprimes.jpg-2.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/835108/images/9917891/doliprane-tabs-1000-mg-8-comprimes.jpg-2.png)
👇That's the French paracetamol👇
Lazy to manage an HTTP cache?
![](https://s3.amazonaws.com/media-p.slid.es/uploads/835108/images/10605389/Capture_d_%C3%A9cran_2023-07-08_%C3%A0_02.48.48.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/835108/images/10605390/Capture_d_%C3%A9cran_2023-07-08_%C3%A0_02.49.50.png)
Thank you for your attention
![](https://media.giphy.com/media/LpiHFtzyFTqe3AaT33/giphy.gif)
Give your feedbacks👉
![](https://s3.amazonaws.com/media-p.slid.es/uploads/835108/images/10610393/Screenshot_2023-07-11_at_08.21.49.png)
Quoi de neuf dans le monde du cache HTTP
By darkweak
Quoi de neuf dans le monde du cache HTTP
- 191