Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
HTTP + Caching - PHPUG Cologne 2014/03
Search
Tobias Gies
March 07, 2014
Programming
160
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
HTTP + Caching - PHPUG Cologne 2014/03
A talk about HTTP headers and how they influence cache behavior.
Tobias Gies
March 07, 2014
More Decks by Tobias Gies
See All by Tobias Gies
Intro to Apache Kafka #phpbnl20
tobiasgies
1
410
Technical Debt - #phpbnl16
tobiasgies
1
280
Technical Debt: Why it's crippling you and what to do
tobiasgies
0
250
Action-Domain-Responder - PHPNW14
tobiasgies
1
760
Dependency Injection - PHPUG Cologne 2013/8
tobiasgies
1
220
Dependency Injection
tobiasgies
1
150
Other Decks in Programming
See All in Programming
テストを司るデーモンに会いに行く 〜隔離した仮想マシンでテストを通すまで〜
h1d3mun3
1
560
AgentCore CLI で進化した AWS での AI エージェントの作り方 : 必要な機能を必要な時に
icoxfog417
PRO
3
370
C#の現在地 進化の歴史と、AI時代の.NET Everywhere
neuecc
4
3.5k
【高い買い物LT会】初任給で話題の国産フィジカルAIを買った話
akagami
PRO
0
170
TiDB Cloudのカスタムコントローラーによるオートスケール対応
takaidohigasi
0
130
Heart of Swift Concurrency
koher
0
960
技術的負債の返済は、AI時代の複利で効く投資 — 経営としての意思決定とその遂行
curekoshimizu
0
1.8k
iOS 27でニュースアプリはどう変わる!? 〜日経電子版の新機能対応と、開発事例から〜
lynnswap
1
12k
WebMCP Challenge に星空観察アプリで参加した話
okajun35
0
190
スマートフォンでモールス信号を送受信する 〜スマートフォンのLEDとカメラで作る光通信の設計と実装〜
atsuki_seo
0
170
AWS Step Functions 大規模並列の壁を越える / jaws-sonic-2026-niigata-step-functions
kasacchiful
PRO
1
510
フロントエンドUIフレームワークのこれまでとこれから
ssssota
5
2.9k
Featured
See All Featured
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
63
46k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
1
410
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
74
42k
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
530
AI: The stuff that nobody shows you
jnunemaker
PRO
10
1.1k
Building the Perfect Custom Keyboard
takai
2
880
Product Roadmaps are Hard
iamctodd
55
13k
KATA
mclloyd
PRO
35
15k
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.5k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.9k
Documentation Writing (for coders)
carmenintech
77
5.5k
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
280
Transcript
HTTP
HyperText Transfer Protocol
HTTP request GET /index.1.de.html HTTP/1.1 Host: www.example.com
HTTP request GET / HTTP/1.1 Host: www.example.com Connection: keep-alive Cache-Control:
no-cache Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 Pragma: no-cache User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.107 Safari/537.36 Accept-Encoding: gzip,deflate,sdch Accept-Language: de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4 Cookie: sid=t73fuqi322d115fdr8tt1fsf30
HTTP response HTTP/1.1 200 OK Date: Thu, 20 Feb 2014
14:42:03 GMT Server: Apache/2.2.22 (Ubuntu) PHP/5.3.10-1ubuntu3.9 mod_ssl/2.2.22 OpenSSL/1.0.1 X-Powered-By: PHP/5.3.10-1ubuntu3.9 P3P: CP="NOI NID ADMa OUR IND UNI COM NAV" Set-Cookie: sid=t73fuqi322d115fdr8tt1fsf30; path=/; HttpOnly Expires: Sun, 22 Dec 2013 14:42:03 GMT Cache-Control: no-store, no-cache, must-revalidate, no-transform Last-Modified: Thu, 20 Feb 2014 14:42:03 GMT X-Generator: papaya CMS X-Papaya-Cache: no Content-Encoding: gzip X-Papaya-Gzip: yes Content-Length: 6315 Keep-Alive: timeout=5, max=95 Connection: Keep-Alive Content-Type: text/html; charset=utf-8
HTTP-Methoden • GET • POST • PUT • DELETE •
HEAD
HTTP status codes
Exkurs: Caches
Cache-Arten • Browser-Cache • Proxy Cache • Gateway Cache /
Reverse Proxy – Self-hosted (Varnish, …) – Kommerziell / CDN (Cloudflare, Akamai & co.)
Cache-relevante HTTP-Header • Expires • Cache-Control • ETag • Last-Modified
• If-Modified-Since • If-None-Match • Vary • Age • Set-Cookie
Expires Expires: Sun, 22 Dec 2013 14:42:03 GMT • HTTP/1.0
• Ablaufdatum des Inhalts (Zeitzone GMT!) • Nützlich für Caching statischer Ressourcen
Cache-Control Cache-Control: no-cache, must-revalidate • HTTP/1.1 • Wesentlich feinere Kontrolle
über den Cache • Optionen: – max-age – s-maxage – public – private
Cache-Control Cache-Control: no-cache, must-revalidate • HTTP/1.1 • Wesentlich feinere Kontrolle
über den Cache • Optionen (2): – no-cache – no-store – must-revalidate – proxy-revalidate
ETag ETag: [W/]"some-random-value" • HTTP/1.1 • Identifiziert eine Version einer
Ressource eindeutig • Starker ETag: Garantiert identische Ressource • Schwacher ETag (W/): Garantiert äquivalente Ressource • Bei statischen Ressourcen abschalten
Last-Modified Last-Modified: Thu, 20 Feb 2014 14:42:03 GMT • Letztes
Änderungsdatum der Ressource
If-Modified-Since If-Modified-Since: Wed, 01 Sep 2004 13:24:52 GMT • Request-Header
• Nur ausliefern, wenn neuere Version vorhanden • Sonst Status 304
If-None-Match If-None-Match: "some-random-value" • Request-Header • Abfrage, ob Version mit
diesem ETag vorhanden • Wenn ja: Status 304
Vary Vary: Cookie,Accept,Accept-Encoding • Information an Caches: Antwort unterscheidet sich
je nach Wert der angegebenen Request- Header! • Bspw. wichtig im Umgang mit schlecht konfigurierten Corporate Proxies
Age Age: 30 • Gibt das Alter der Ressource in
Sekunden an • Caches rechnen: request timestamp – now – Age + max-age > 0? • Wird auch von Caches selbst angegeben
Set-Cookie Set-Cookie: name=somevalue; Secure • Inhalt, der Cookies enthält, ist
uncached! • Aber: Cookies sind nützlich, um mehrere Versionen einer Ressource im Reverse-Proxy zu cachen.
POST • POST bedeutet: Es wird eine Ressource verändert. •
Antworten auf POST-Requests werden nicht gecached. • POST also nur da verwenden, wo es nötig ist.
Ressourcen • Wikipedia: „Liste der HTTP-Headerfelder“ • Caching Tutorial for
web authors and webmasters: http://www.mnot.net/cache_docs/ • HTTP – The Varnish Cookbook: https://www.varnish-software.com/static/book/HTTP.html • YSlow: Best practices for speeding up your website: http://developer.yahoo.com/performance/rules.html
Noch Fragen?