SlideShare a Scribd company logo
1 of 31
NGINX High-performance 
Caching 
Introduced by Andrew Alexeev 
Presented by Owen Garrett 
Nginx, Inc.
About this webinar 
Content Caching is one of the most effective ways to dramatically improve 
the performance of a web site. In this webinar, we’ll deep-dive into 
NGINX’s caching abilities and investigate the architecture used, debugging 
techniques and advanced configuration. By the end of the webinar, you’ll 
be well equipped to configure NGINX to cache content exactly as you need.
BASIC PRINCIPLES OF CONTENT CACHING
Basic Principles 
Internet 
N 
GET /index.html 
GET /index.html 
Used by: Browser Cache, Content Delivery Network and/or Reverse Proxy Cache
Mechanics of HTTP Caching 
• Origin server declares cacheability of content 
Expires: Tue, 6 May 2014 02:28:12 GMT 
Cache-Control: public, max-age=60 
X-Accel-Expires: 30 
Last-Modified: Tue, 29 April 2014 02:28:12 GMT 
ETag: "3e86-410-3596fbbc“ 
• Requesting client honors cacheability 
– May issue conditional GETs
What does NGINX cache? 
• Cache GET and HEAD with no Set-Cookie response 
• Uniqueness defined by raw URL or: 
proxy_cache_key $scheme$proxy_host$uri$is_args$args; 
• Cache time defined by 
– X-Accel-Expires 
– Cache-Control 
– Expires http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html
NGINX IN OPERATION…
NGINX Config 
proxy_cache_path /tmp/cache keys_zone=one:10m levels=1:2 inactive=60m; 
server { 
listen 80; 
server_name localhost; 
location / { 
proxy_pass http://localhost:8080; 
proxy_cache one; 
} 
}
Caching Process 
Internet 
MISS 
Read request Wait? 
Check Cache 
Respond from 
cache 
cache_lock_timeout 
Response 
cacheable? 
HIT 
Stream to disk 
NGINX can use stale content under the following circumstances: 
proxy_cache_use_stale error | timeout | invalid_header | 
updating | http_500 | http_502 | http_503 | http_504 | 
http_403 | http_404 | off
Caching is not just for HTTP 
• FastCGI 
– Functions much like HTTP 
• Memcache 
– Retrieve content from memcached 
server (must be prepopulated) 
• uwsgi and SCGI 
N 
HTTP 
FastCGI 
memcached 
uwsgi 
SCGI 
NGINX is more than 
just a reverse proxy
HOW TO UNDERSTAND WHAT’S GOING ON
Cache Instrumentation 
add_header X-Cache-Status $upstream_cache_status; 
MISS Response not found in cache; got from upstream. Response may have been 
saved to cache 
BYPASS proxy_cache_bypass got response from upstream. Response may have 
been saved to cache 
EXPIRED entry in cache has expired; we return fresh content from upstream 
STALE takes control and serves stale content from cache because upstream is not 
responding correctly 
UPDATING serve state content from cache because cache_lock has timed out and 
proxy_use_stale takes control 
REVALIDATED proxy_cache_revalidate verified that the current cached content was still 
valid (if-modified-since) 
HIT we serve valid, fresh content direct from cache
Cache Instrumentation 
map $remote_addr $cache_status { 
127.0.0.1 $upstream_cache_status; 
default “”; 
} 
server { 
location / { 
proxy_pass http://localhost:8002; 
proxy_cache one; 
add_header X-Cache-Status $cache_status; 
} 
}
Extended Status 
Check out: demo.nginx.com 
http://demo.nginx.com/status.html http://demo.nginx.com/status
HOW CONTENT CACHING FUNCTIONS 
IN NGINX
How it works... 
• NGINX uses a persistent disk-based cache 
– OS Page Cache keeps content in memory, with hints from 
NGINX processes 
• We’ll look at: 
– How is content stored in the cache? 
– How is the cache loaded at startup? 
– Pruning the cache over time 
– Purging content manually from the cache
How is cached content stored? 
proxy_cache_path /tmp/cache keys_zone=one:10m levels=1:2 
max_size=40m; 
• Define cache key: 
proxy_cache_key $scheme$proxy_host$uri$is_args$args; 
• Get the content into the cache, then check the md5 
$ echo -n "httplocalhost:8002/time.php" | md5sum 
6d91b1ec887b7965d6a926cff19379b4 - 
• Verify it’s there: 
$ cat /tmp/cache/4/9b/6d91b1ec887b7965d6a926cff19379b4
Loading cache from disk 
• Cache metadata stored in shared memory segment 
• Populated at startup from cache by cache loader 
proxy_cache_path path keys_zone=name:size 
[loader_files=number] [loader_threshold=time] [loader_sleep=time]; 
(100) (200ms) (50ms) 
– Loads files in blocks of 100 
– Takes no longer than 200ms 
– Pauses for 50ms, then repeats
Managing the disk cache 
• Cache Manager runs periodically, purging files that 
were inactive irrespective of cache time, deleteing 
files in LRU style if cache is too big 
proxy_cache_path path keys_zone=name:size 
[inactive=time] [max_size=size]; 
(10m) 
– Remove files that have not been used within 10m 
– Remove files if cache size exceeds max_size
Purging content from disk 
• Find it and delete it 
– Relatively easy if you know the key 
• NGINX Plus – cache purge capability 
$ curl -X PURGE -D – "http://localhost:8001/*" 
HTTP/1.1 204 No Content 
Server: nginx/1.5.12 
Date: Sat, 03 May 2014 16:33:04 GMT 
Connection: keep-alive 
X-Cache-Key: httplocalhost:8002/*
CONTROLLING CACHING
Delayed caching 
proxy_cache_min_uses number; 
• Saves on disk writes for very cool caches 
Cache revalidation 
proxy_cache_revalidate on; 
• Saves on upstream bandwidth and disk writes
Control over cache time 
proxy_cache_valid 200 302 10m; 
proxy_cache_valid 404 1m; 
• Priority is: 
– X-Accel-Expires 
– Cache-Control 
– Expires 
– proxy_cache_valid 
Set-Cookie response header 
means no caching
Cache / don’t cache 
proxy_cache_bypass string ...; 
proxy_no_cache string ...; 
• Bypass the cache – go to origin; may cache result 
• No_Cache – if we go to origin, don’t cache result 
proxy_no_cache $cookie_nocache $arg_nocache $http_authorization; 
• Typically used with a complex cache key, and only if the 
origin does not sent appropriate cache-control reponses
Multiple Caches 
proxy_cache_path /tmp/cache1 keys_zone=one:10m levels=1:2 inactive=60s; 
proxy_cache_path /tmp/cache2 keys_zone=two:2m levels=1:2 inactive=20s; 
• Different cache policies for different tenants 
• Pin caches to specific disks 
• Temp-file considerations – put on same disk!: 
proxy_temp_path path [level1 [level2 [level3]]];
QUICK REVIEW – WHY CACHE?
Why is page speed important? 
• We used to talk about the ‘N second rule’: 
– 10-second rule 
• (Jakob Nielsen, March 1997) 
– 8-second rule 
• (Zona Research, June 2001) 
– 4-second rule 
• (Jupiter Research, June 2006) 
– 3-second rule 
• (PhocusWright, March 2010) 
12 
10 
8 
6 
4 
2 
0 
Jan-97 
Jan-98 
Jan-99 
Jan-00 
Jan-01 
Jan-02 
Jan-03 
Jan-04 
Jan-05 
Jan-06 
Jan-07 
Jan-08 
Jan-09 
Jan-10 
Jan-11 
Jan-12 
Jan-13 
Jan-14
Google changed the rules 
“We want you to be able to get 
from one page to another as 
quickly as you turn the page on 
a book” 
Urs Hölzle, Google
The costs of poor performance 
• Google: search enhancements cost 0.5s page load 
– Ad CTR dropped 20% 
• Amazon: Artificially increased page load by 100ms 
– Customer revenue dropped 1% 
• Walmart, Yahoo, Shopzilla, Edmunds, Mozilla… 
– All reported similar effects on revenue 
• Google Pagerank – Page Speed affects Page Rank 
– Time to First Byte is what appears to count
NGINX Caching lets you 
Improve end-user performance 
Consolidate and simplify your web infrastructure 
Increase server capacity 
Insulate yourself from server failures
Closing thoughts 
• 38% of the world’s busiest websites use NGINX 
• Check out the blogs on nginx.com 
• Future webinars: nginx.com/webinars 
Try NGINX F/OSS (nginx.org) or NGINX Plus (nginx.com)

More Related Content

What's hot

5 things you didn't know nginx could do
5 things you didn't know nginx could do5 things you didn't know nginx could do
5 things you didn't know nginx could dosarahnovotny
 
Learn nginx in 90mins
Learn nginx in 90minsLearn nginx in 90mins
Learn nginx in 90minsLarry Cai
 
MySQL Monitoring using Prometheus & Grafana
MySQL Monitoring using Prometheus & GrafanaMySQL Monitoring using Prometheus & Grafana
MySQL Monitoring using Prometheus & GrafanaYoungHeon (Roy) Kim
 
NGINX: High Performance Load Balancing
NGINX: High Performance Load BalancingNGINX: High Performance Load Balancing
NGINX: High Performance Load BalancingNGINX, Inc.
 
NGINX: Basics & Best Practices - EMEA Broadcast
NGINX: Basics & Best Practices - EMEA BroadcastNGINX: Basics & Best Practices - EMEA Broadcast
NGINX: Basics & Best Practices - EMEA BroadcastNGINX, Inc.
 
Ceph Block Devices: A Deep Dive
Ceph Block Devices:  A Deep DiveCeph Block Devices:  A Deep Dive
Ceph Block Devices: A Deep DiveRed_Hat_Storage
 
Scouter와 influx db – grafana 연동 가이드
Scouter와 influx db – grafana 연동 가이드Scouter와 influx db – grafana 연동 가이드
Scouter와 influx db – grafana 연동 가이드Ji-Woong Choi
 
MinIO January 2020 Briefing
MinIO January 2020 BriefingMinIO January 2020 Briefing
MinIO January 2020 BriefingJonathan Symonds
 
Red Hat OpenStack 17 저자직강+스터디그룹_1주차
Red Hat OpenStack 17 저자직강+스터디그룹_1주차Red Hat OpenStack 17 저자직강+스터디그룹_1주차
Red Hat OpenStack 17 저자직강+스터디그룹_1주차Nalee Jang
 
開發人員必須知道的 Kubernetes 核心技術 - Kubernetes Summit 2018
開發人員必須知道的 Kubernetes 核心技術 - Kubernetes Summit 2018開發人員必須知道的 Kubernetes 核心技術 - Kubernetes Summit 2018
開發人員必須知道的 Kubernetes 核心技術 - Kubernetes Summit 2018Will Huang
 
Canary deployment with Traefik and K3S
Canary deployment with Traefik and K3SCanary deployment with Traefik and K3S
Canary deployment with Traefik and K3SJakub Hajek
 
왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요
왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요
왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요Jo Hoon
 
Nginx internals
Nginx internalsNginx internals
Nginx internalsliqiang xu
 
High Availability for OpenStack
High Availability for OpenStackHigh Availability for OpenStack
High Availability for OpenStackKamesh Pemmaraju
 
Cilium - Network and Application Security with BPF and XDP Thomas Graf, Cova...
Cilium - Network and Application Security with BPF and XDP  Thomas Graf, Cova...Cilium - Network and Application Security with BPF and XDP  Thomas Graf, Cova...
Cilium - Network and Application Security with BPF and XDP Thomas Graf, Cova...Docker, Inc.
 
[2018] 오픈스택 5년 운영의 경험
[2018] 오픈스택 5년 운영의 경험[2018] 오픈스택 5년 운영의 경험
[2018] 오픈스택 5년 운영의 경험NHN FORWARD
 

What's hot (20)

5 things you didn't know nginx could do
5 things you didn't know nginx could do5 things you didn't know nginx could do
5 things you didn't know nginx could do
 
Learn nginx in 90mins
Learn nginx in 90minsLearn nginx in 90mins
Learn nginx in 90mins
 
MySQL Monitoring using Prometheus & Grafana
MySQL Monitoring using Prometheus & GrafanaMySQL Monitoring using Prometheus & Grafana
MySQL Monitoring using Prometheus & Grafana
 
NGINX: High Performance Load Balancing
NGINX: High Performance Load BalancingNGINX: High Performance Load Balancing
NGINX: High Performance Load Balancing
 
macvlan and ipvlan
macvlan and ipvlanmacvlan and ipvlan
macvlan and ipvlan
 
NGINX: Basics & Best Practices - EMEA Broadcast
NGINX: Basics & Best Practices - EMEA BroadcastNGINX: Basics & Best Practices - EMEA Broadcast
NGINX: Basics & Best Practices - EMEA Broadcast
 
Ceph Block Devices: A Deep Dive
Ceph Block Devices:  A Deep DiveCeph Block Devices:  A Deep Dive
Ceph Block Devices: A Deep Dive
 
Scouter와 influx db – grafana 연동 가이드
Scouter와 influx db – grafana 연동 가이드Scouter와 influx db – grafana 연동 가이드
Scouter와 influx db – grafana 연동 가이드
 
MinIO January 2020 Briefing
MinIO January 2020 BriefingMinIO January 2020 Briefing
MinIO January 2020 Briefing
 
Red Hat OpenStack 17 저자직강+스터디그룹_1주차
Red Hat OpenStack 17 저자직강+스터디그룹_1주차Red Hat OpenStack 17 저자직강+스터디그룹_1주차
Red Hat OpenStack 17 저자직강+스터디그룹_1주차
 
開發人員必須知道的 Kubernetes 核心技術 - Kubernetes Summit 2018
開發人員必須知道的 Kubernetes 核心技術 - Kubernetes Summit 2018開發人員必須知道的 Kubernetes 核心技術 - Kubernetes Summit 2018
開發人員必須知道的 Kubernetes 核心技術 - Kubernetes Summit 2018
 
Canary deployment with Traefik and K3S
Canary deployment with Traefik and K3SCanary deployment with Traefik and K3S
Canary deployment with Traefik and K3S
 
왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요
왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요
왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요
 
The basics of fluentd
The basics of fluentdThe basics of fluentd
The basics of fluentd
 
Elk stack
Elk stackElk stack
Elk stack
 
The basics of fluentd
The basics of fluentdThe basics of fluentd
The basics of fluentd
 
Nginx internals
Nginx internalsNginx internals
Nginx internals
 
High Availability for OpenStack
High Availability for OpenStackHigh Availability for OpenStack
High Availability for OpenStack
 
Cilium - Network and Application Security with BPF and XDP Thomas Graf, Cova...
Cilium - Network and Application Security with BPF and XDP  Thomas Graf, Cova...Cilium - Network and Application Security with BPF and XDP  Thomas Graf, Cova...
Cilium - Network and Application Security with BPF and XDP Thomas Graf, Cova...
 
[2018] 오픈스택 5년 운영의 경험
[2018] 오픈스택 5년 운영의 경험[2018] 오픈스택 5년 운영의 경험
[2018] 오픈스택 5년 운영의 경험
 

Viewers also liked

【Interop Tokyo 2015】 M 01: Cisco Meraki クラウド ネットワーキング
【Interop Tokyo 2015】 M 01: Cisco Meraki クラウド ネットワーキング【Interop Tokyo 2015】 M 01: Cisco Meraki クラウド ネットワーキング
【Interop Tokyo 2015】 M 01: Cisco Meraki クラウド ネットワーキングシスコシステムズ合同会社
 
Velocity 2010 Highlights
Velocity 2010 HighlightsVelocity 2010 Highlights
Velocity 2010 HighlightsJoshua Zhu
 
Tips on High Performance Server Programming
Tips on High Performance Server ProgrammingTips on High Performance Server Programming
Tips on High Performance Server ProgrammingJoshua Zhu
 
阿里开源经验分享
阿里开源经验分享阿里开源经验分享
阿里开源经验分享Joshua Zhu
 
阿里CDN技术揭秘
阿里CDN技术揭秘阿里CDN技术揭秘
阿里CDN技术揭秘Joshua Zhu
 
Nginx Internals
Nginx InternalsNginx Internals
Nginx InternalsJoshua Zhu
 
阿里云CDN技术演进之路
阿里云CDN技术演进之路阿里云CDN技术演进之路
阿里云CDN技术演进之路Joshua Zhu
 
HTTP cache @ PUG Rome 03-29-2011
HTTP cache @ PUG Rome 03-29-2011HTTP cache @ PUG Rome 03-29-2011
HTTP cache @ PUG Rome 03-29-2011Alessandro Nadalin
 
Load Balancing and Scaling with NGINX
Load Balancing and Scaling with NGINXLoad Balancing and Scaling with NGINX
Load Balancing and Scaling with NGINXNGINX, Inc.
 
So You Wanna Go Fast?
So You Wanna Go Fast?So You Wanna Go Fast?
So You Wanna Go Fast?Tyler Treat
 

Viewers also liked (12)

【Interop Tokyo 2015】 M 01: Cisco Meraki クラウド ネットワーキング
【Interop Tokyo 2015】 M 01: Cisco Meraki クラウド ネットワーキング【Interop Tokyo 2015】 M 01: Cisco Meraki クラウド ネットワーキング
【Interop Tokyo 2015】 M 01: Cisco Meraki クラウド ネットワーキング
 
Velocity 2010 Highlights
Velocity 2010 HighlightsVelocity 2010 Highlights
Velocity 2010 Highlights
 
Tips on High Performance Server Programming
Tips on High Performance Server ProgrammingTips on High Performance Server Programming
Tips on High Performance Server Programming
 
阿里开源经验分享
阿里开源经验分享阿里开源经验分享
阿里开源经验分享
 
阿里CDN技术揭秘
阿里CDN技术揭秘阿里CDN技术揭秘
阿里CDN技术揭秘
 
Nginx Internals
Nginx InternalsNginx Internals
Nginx Internals
 
阿里云CDN技术演进之路
阿里云CDN技术演进之路阿里云CDN技术演进之路
阿里云CDN技术演进之路
 
HTTP cache @ PUG Rome 03-29-2011
HTTP cache @ PUG Rome 03-29-2011HTTP cache @ PUG Rome 03-29-2011
HTTP cache @ PUG Rome 03-29-2011
 
Load Balancing and Scaling with NGINX
Load Balancing and Scaling with NGINXLoad Balancing and Scaling with NGINX
Load Balancing and Scaling with NGINX
 
Http cache - kiedy/dlaczego/jak
Http cache - kiedy/dlaczego/jakHttp cache - kiedy/dlaczego/jak
Http cache - kiedy/dlaczego/jak
 
20100918 android cache
20100918 android cache20100918 android cache
20100918 android cache
 
So You Wanna Go Fast?
So You Wanna Go Fast?So You Wanna Go Fast?
So You Wanna Go Fast?
 

Similar to NGINX High-performance Caching

Rails Caching: Secrets From the Edge
Rails Caching: Secrets From the EdgeRails Caching: Secrets From the Edge
Rails Caching: Secrets From the EdgeFastly
 
Rails Caching Secrets from the Edge
Rails Caching Secrets from the EdgeRails Caching Secrets from the Edge
Rails Caching Secrets from the EdgeMichael May
 
Drupal 8 and NGINX
Drupal 8 and NGINX Drupal 8 and NGINX
Drupal 8 and NGINX NGINX, Inc.
 
What is Nginx and Why You Should to Use it with Wordpress Hosting
What is Nginx and Why You Should to Use it with Wordpress HostingWhat is Nginx and Why You Should to Use it with Wordpress Hosting
What is Nginx and Why You Should to Use it with Wordpress HostingWPSFO Meetup Group
 
High Availability Content Caching with NGINX
High Availability Content Caching with NGINXHigh Availability Content Caching with NGINX
High Availability Content Caching with NGINXKevin Jones
 
Nginx Scalable Stack
Nginx Scalable StackNginx Scalable Stack
Nginx Scalable StackBruno Paiuca
 
Hard Caching in TYPO3 - Developer Days in Malmø 2017
Hard Caching in TYPO3 - Developer Days in Malmø 2017Hard Caching in TYPO3 - Developer Days in Malmø 2017
Hard Caching in TYPO3 - Developer Days in Malmø 2017Benni Mack
 
Accelerating Rails with edge caching
Accelerating Rails with edge cachingAccelerating Rails with edge caching
Accelerating Rails with edge cachingMichael May
 
Clug 2012 March web server optimisation
Clug 2012 March   web server optimisationClug 2012 March   web server optimisation
Clug 2012 March web server optimisationgrooverdan
 
Where is my cache architectural patterns for caching microservices by example
Where is my cache architectural patterns for caching microservices by exampleWhere is my cache architectural patterns for caching microservices by example
Where is my cache architectural patterns for caching microservices by exampleRafał Leszko
 
ITB2017 - Nginx Effective High Availability Content Caching
ITB2017 - Nginx Effective High Availability Content CachingITB2017 - Nginx Effective High Availability Content Caching
ITB2017 - Nginx Effective High Availability Content CachingOrtus Solutions, Corp
 
Content Caching with NGINX and NGINX Plus
Content Caching with NGINX and NGINX PlusContent Caching with NGINX and NGINX Plus
Content Caching with NGINX and NGINX PlusKevin Jones
 
Where Django Caching Bust at the Seams
Where Django Caching Bust at the SeamsWhere Django Caching Bust at the Seams
Where Django Caching Bust at the SeamsConcentric Sky
 
Less and faster – Cache tips for WordPress developers
Less and faster – Cache tips for WordPress developersLess and faster – Cache tips for WordPress developers
Less and faster – Cache tips for WordPress developersSeravo
 
Performance Optimization using Caching | Swatantra Kumar
Performance Optimization using Caching | Swatantra KumarPerformance Optimization using Caching | Swatantra Kumar
Performance Optimization using Caching | Swatantra KumarSwatantra Kumar
 
Using NGINX as an Effective and Highly Available Content Cache
Using NGINX as an Effective and Highly Available Content CacheUsing NGINX as an Effective and Highly Available Content Cache
Using NGINX as an Effective and Highly Available Content CacheKevin Jones
 
Mobile App Performance: Getting the Most from APIs (MBL203) | AWS re:Invent ...
Mobile App Performance:  Getting the Most from APIs (MBL203) | AWS re:Invent ...Mobile App Performance:  Getting the Most from APIs (MBL203) | AWS re:Invent ...
Mobile App Performance: Getting the Most from APIs (MBL203) | AWS re:Invent ...Amazon Web Services
 
Nginx caching
Nginx cachingNginx caching
Nginx cachingreneedv
 
Web performance optimization - MercadoLibre
Web performance optimization - MercadoLibreWeb performance optimization - MercadoLibre
Web performance optimization - MercadoLibrePablo Moretti
 

Similar to NGINX High-performance Caching (20)

Rails Caching: Secrets From the Edge
Rails Caching: Secrets From the EdgeRails Caching: Secrets From the Edge
Rails Caching: Secrets From the Edge
 
Rails Caching Secrets from the Edge
Rails Caching Secrets from the EdgeRails Caching Secrets from the Edge
Rails Caching Secrets from the Edge
 
Drupal 8 and NGINX
Drupal 8 and NGINX Drupal 8 and NGINX
Drupal 8 and NGINX
 
Mini-Training: To cache or not to cache
Mini-Training: To cache or not to cacheMini-Training: To cache or not to cache
Mini-Training: To cache or not to cache
 
What is Nginx and Why You Should to Use it with Wordpress Hosting
What is Nginx and Why You Should to Use it with Wordpress HostingWhat is Nginx and Why You Should to Use it with Wordpress Hosting
What is Nginx and Why You Should to Use it with Wordpress Hosting
 
High Availability Content Caching with NGINX
High Availability Content Caching with NGINXHigh Availability Content Caching with NGINX
High Availability Content Caching with NGINX
 
Nginx Scalable Stack
Nginx Scalable StackNginx Scalable Stack
Nginx Scalable Stack
 
Hard Caching in TYPO3 - Developer Days in Malmø 2017
Hard Caching in TYPO3 - Developer Days in Malmø 2017Hard Caching in TYPO3 - Developer Days in Malmø 2017
Hard Caching in TYPO3 - Developer Days in Malmø 2017
 
Accelerating Rails with edge caching
Accelerating Rails with edge cachingAccelerating Rails with edge caching
Accelerating Rails with edge caching
 
Clug 2012 March web server optimisation
Clug 2012 March   web server optimisationClug 2012 March   web server optimisation
Clug 2012 March web server optimisation
 
Where is my cache architectural patterns for caching microservices by example
Where is my cache architectural patterns for caching microservices by exampleWhere is my cache architectural patterns for caching microservices by example
Where is my cache architectural patterns for caching microservices by example
 
ITB2017 - Nginx Effective High Availability Content Caching
ITB2017 - Nginx Effective High Availability Content CachingITB2017 - Nginx Effective High Availability Content Caching
ITB2017 - Nginx Effective High Availability Content Caching
 
Content Caching with NGINX and NGINX Plus
Content Caching with NGINX and NGINX PlusContent Caching with NGINX and NGINX Plus
Content Caching with NGINX and NGINX Plus
 
Where Django Caching Bust at the Seams
Where Django Caching Bust at the SeamsWhere Django Caching Bust at the Seams
Where Django Caching Bust at the Seams
 
Less and faster – Cache tips for WordPress developers
Less and faster – Cache tips for WordPress developersLess and faster – Cache tips for WordPress developers
Less and faster – Cache tips for WordPress developers
 
Performance Optimization using Caching | Swatantra Kumar
Performance Optimization using Caching | Swatantra KumarPerformance Optimization using Caching | Swatantra Kumar
Performance Optimization using Caching | Swatantra Kumar
 
Using NGINX as an Effective and Highly Available Content Cache
Using NGINX as an Effective and Highly Available Content CacheUsing NGINX as an Effective and Highly Available Content Cache
Using NGINX as an Effective and Highly Available Content Cache
 
Mobile App Performance: Getting the Most from APIs (MBL203) | AWS re:Invent ...
Mobile App Performance:  Getting the Most from APIs (MBL203) | AWS re:Invent ...Mobile App Performance:  Getting the Most from APIs (MBL203) | AWS re:Invent ...
Mobile App Performance: Getting the Most from APIs (MBL203) | AWS re:Invent ...
 
Nginx caching
Nginx cachingNginx caching
Nginx caching
 
Web performance optimization - MercadoLibre
Web performance optimization - MercadoLibreWeb performance optimization - MercadoLibre
Web performance optimization - MercadoLibre
 

More from NGINX, Inc.

【NGINXセミナー】 Ingressを使ってマイクロサービスの運用を楽にする方法
【NGINXセミナー】 Ingressを使ってマイクロサービスの運用を楽にする方法【NGINXセミナー】 Ingressを使ってマイクロサービスの運用を楽にする方法
【NGINXセミナー】 Ingressを使ってマイクロサービスの運用を楽にする方法NGINX, Inc.
 
【NGINXセミナー】 NGINXのWAFとは?その使い方と設定方法 解説セミナー
【NGINXセミナー】 NGINXのWAFとは?その使い方と設定方法 解説セミナー【NGINXセミナー】 NGINXのWAFとは?その使い方と設定方法 解説セミナー
【NGINXセミナー】 NGINXのWAFとは?その使い方と設定方法 解説セミナーNGINX, Inc.
 
【NGINXセミナー】API ゲートウェイとしてのNGINX Plus活用方法
【NGINXセミナー】API ゲートウェイとしてのNGINX Plus活用方法【NGINXセミナー】API ゲートウェイとしてのNGINX Plus活用方法
【NGINXセミナー】API ゲートウェイとしてのNGINX Plus活用方法NGINX, Inc.
 
Get Hands-On with NGINX and QUIC+HTTP/3
Get Hands-On with NGINX and QUIC+HTTP/3Get Hands-On with NGINX and QUIC+HTTP/3
Get Hands-On with NGINX and QUIC+HTTP/3NGINX, Inc.
 
Managing Kubernetes Cost and Performance with NGINX & Kubecost
Managing Kubernetes Cost and Performance with NGINX & KubecostManaging Kubernetes Cost and Performance with NGINX & Kubecost
Managing Kubernetes Cost and Performance with NGINX & KubecostNGINX, Inc.
 
Manage Microservices Chaos and Complexity with Observability
Manage Microservices Chaos and Complexity with ObservabilityManage Microservices Chaos and Complexity with Observability
Manage Microservices Chaos and Complexity with ObservabilityNGINX, Inc.
 
Accelerate Microservices Deployments with Automation
Accelerate Microservices Deployments with AutomationAccelerate Microservices Deployments with Automation
Accelerate Microservices Deployments with AutomationNGINX, Inc.
 
Unit 2: Microservices Secrets Management 101
Unit 2: Microservices Secrets Management 101Unit 2: Microservices Secrets Management 101
Unit 2: Microservices Secrets Management 101NGINX, Inc.
 
Unit 1: Apply the Twelve-Factor App to Microservices Architectures
Unit 1: Apply the Twelve-Factor App to Microservices ArchitecturesUnit 1: Apply the Twelve-Factor App to Microservices Architectures
Unit 1: Apply the Twelve-Factor App to Microservices ArchitecturesNGINX, Inc.
 
NGINX基本セミナー(セキュリティ編)~NGINXでセキュアなプラットフォームを実現する方法!
NGINX基本セミナー(セキュリティ編)~NGINXでセキュアなプラットフォームを実現する方法!NGINX基本セミナー(セキュリティ編)~NGINXでセキュアなプラットフォームを実現する方法!
NGINX基本セミナー(セキュリティ編)~NGINXでセキュアなプラットフォームを実現する方法!NGINX, Inc.
 
Easily View, Manage, and Scale Your App Security with F5 NGINX
Easily View, Manage, and Scale Your App Security with F5 NGINXEasily View, Manage, and Scale Your App Security with F5 NGINX
Easily View, Manage, and Scale Your App Security with F5 NGINXNGINX, Inc.
 
NGINXセミナー(基本編)~いまさら聞けないNGINXコンフィグなど基本がわかる!
NGINXセミナー(基本編)~いまさら聞けないNGINXコンフィグなど基本がわかる!NGINXセミナー(基本編)~いまさら聞けないNGINXコンフィグなど基本がわかる!
NGINXセミナー(基本編)~いまさら聞けないNGINXコンフィグなど基本がわかる!NGINX, Inc.
 
Keep Ahead of Evolving Cyberattacks with OPSWAT and F5 NGINX
Keep Ahead of Evolving Cyberattacks with OPSWAT and F5 NGINXKeep Ahead of Evolving Cyberattacks with OPSWAT and F5 NGINX
Keep Ahead of Evolving Cyberattacks with OPSWAT and F5 NGINXNGINX, Inc.
 
Install and Configure NGINX Unit, the Universal Application, Web, and Proxy S...
Install and Configure NGINX Unit, the Universal Application, Web, and Proxy S...Install and Configure NGINX Unit, the Universal Application, Web, and Proxy S...
Install and Configure NGINX Unit, the Universal Application, Web, and Proxy S...NGINX, Inc.
 
Protecting Apps from Hacks in Kubernetes with NGINX
Protecting Apps from Hacks in Kubernetes with NGINXProtecting Apps from Hacks in Kubernetes with NGINX
Protecting Apps from Hacks in Kubernetes with NGINXNGINX, Inc.
 
NGINX Kubernetes API
NGINX Kubernetes APINGINX Kubernetes API
NGINX Kubernetes APINGINX, Inc.
 
Successfully Implement Your API Strategy with NGINX
Successfully Implement Your API Strategy with NGINXSuccessfully Implement Your API Strategy with NGINX
Successfully Implement Your API Strategy with NGINXNGINX, Inc.
 
Installing and Configuring NGINX Open Source
Installing and Configuring NGINX Open SourceInstalling and Configuring NGINX Open Source
Installing and Configuring NGINX Open SourceNGINX, Inc.
 
Shift Left for More Secure Apps with F5 NGINX
Shift Left for More Secure Apps with F5 NGINXShift Left for More Secure Apps with F5 NGINX
Shift Left for More Secure Apps with F5 NGINXNGINX, Inc.
 
How to Avoid the Top 5 NGINX Configuration Mistakes.pptx
How to Avoid the Top 5 NGINX Configuration Mistakes.pptxHow to Avoid the Top 5 NGINX Configuration Mistakes.pptx
How to Avoid the Top 5 NGINX Configuration Mistakes.pptxNGINX, Inc.
 

More from NGINX, Inc. (20)

【NGINXセミナー】 Ingressを使ってマイクロサービスの運用を楽にする方法
【NGINXセミナー】 Ingressを使ってマイクロサービスの運用を楽にする方法【NGINXセミナー】 Ingressを使ってマイクロサービスの運用を楽にする方法
【NGINXセミナー】 Ingressを使ってマイクロサービスの運用を楽にする方法
 
【NGINXセミナー】 NGINXのWAFとは?その使い方と設定方法 解説セミナー
【NGINXセミナー】 NGINXのWAFとは?その使い方と設定方法 解説セミナー【NGINXセミナー】 NGINXのWAFとは?その使い方と設定方法 解説セミナー
【NGINXセミナー】 NGINXのWAFとは?その使い方と設定方法 解説セミナー
 
【NGINXセミナー】API ゲートウェイとしてのNGINX Plus活用方法
【NGINXセミナー】API ゲートウェイとしてのNGINX Plus活用方法【NGINXセミナー】API ゲートウェイとしてのNGINX Plus活用方法
【NGINXセミナー】API ゲートウェイとしてのNGINX Plus活用方法
 
Get Hands-On with NGINX and QUIC+HTTP/3
Get Hands-On with NGINX and QUIC+HTTP/3Get Hands-On with NGINX and QUIC+HTTP/3
Get Hands-On with NGINX and QUIC+HTTP/3
 
Managing Kubernetes Cost and Performance with NGINX & Kubecost
Managing Kubernetes Cost and Performance with NGINX & KubecostManaging Kubernetes Cost and Performance with NGINX & Kubecost
Managing Kubernetes Cost and Performance with NGINX & Kubecost
 
Manage Microservices Chaos and Complexity with Observability
Manage Microservices Chaos and Complexity with ObservabilityManage Microservices Chaos and Complexity with Observability
Manage Microservices Chaos and Complexity with Observability
 
Accelerate Microservices Deployments with Automation
Accelerate Microservices Deployments with AutomationAccelerate Microservices Deployments with Automation
Accelerate Microservices Deployments with Automation
 
Unit 2: Microservices Secrets Management 101
Unit 2: Microservices Secrets Management 101Unit 2: Microservices Secrets Management 101
Unit 2: Microservices Secrets Management 101
 
Unit 1: Apply the Twelve-Factor App to Microservices Architectures
Unit 1: Apply the Twelve-Factor App to Microservices ArchitecturesUnit 1: Apply the Twelve-Factor App to Microservices Architectures
Unit 1: Apply the Twelve-Factor App to Microservices Architectures
 
NGINX基本セミナー(セキュリティ編)~NGINXでセキュアなプラットフォームを実現する方法!
NGINX基本セミナー(セキュリティ編)~NGINXでセキュアなプラットフォームを実現する方法!NGINX基本セミナー(セキュリティ編)~NGINXでセキュアなプラットフォームを実現する方法!
NGINX基本セミナー(セキュリティ編)~NGINXでセキュアなプラットフォームを実現する方法!
 
Easily View, Manage, and Scale Your App Security with F5 NGINX
Easily View, Manage, and Scale Your App Security with F5 NGINXEasily View, Manage, and Scale Your App Security with F5 NGINX
Easily View, Manage, and Scale Your App Security with F5 NGINX
 
NGINXセミナー(基本編)~いまさら聞けないNGINXコンフィグなど基本がわかる!
NGINXセミナー(基本編)~いまさら聞けないNGINXコンフィグなど基本がわかる!NGINXセミナー(基本編)~いまさら聞けないNGINXコンフィグなど基本がわかる!
NGINXセミナー(基本編)~いまさら聞けないNGINXコンフィグなど基本がわかる!
 
Keep Ahead of Evolving Cyberattacks with OPSWAT and F5 NGINX
Keep Ahead of Evolving Cyberattacks with OPSWAT and F5 NGINXKeep Ahead of Evolving Cyberattacks with OPSWAT and F5 NGINX
Keep Ahead of Evolving Cyberattacks with OPSWAT and F5 NGINX
 
Install and Configure NGINX Unit, the Universal Application, Web, and Proxy S...
Install and Configure NGINX Unit, the Universal Application, Web, and Proxy S...Install and Configure NGINX Unit, the Universal Application, Web, and Proxy S...
Install and Configure NGINX Unit, the Universal Application, Web, and Proxy S...
 
Protecting Apps from Hacks in Kubernetes with NGINX
Protecting Apps from Hacks in Kubernetes with NGINXProtecting Apps from Hacks in Kubernetes with NGINX
Protecting Apps from Hacks in Kubernetes with NGINX
 
NGINX Kubernetes API
NGINX Kubernetes APINGINX Kubernetes API
NGINX Kubernetes API
 
Successfully Implement Your API Strategy with NGINX
Successfully Implement Your API Strategy with NGINXSuccessfully Implement Your API Strategy with NGINX
Successfully Implement Your API Strategy with NGINX
 
Installing and Configuring NGINX Open Source
Installing and Configuring NGINX Open SourceInstalling and Configuring NGINX Open Source
Installing and Configuring NGINX Open Source
 
Shift Left for More Secure Apps with F5 NGINX
Shift Left for More Secure Apps with F5 NGINXShift Left for More Secure Apps with F5 NGINX
Shift Left for More Secure Apps with F5 NGINX
 
How to Avoid the Top 5 NGINX Configuration Mistakes.pptx
How to Avoid the Top 5 NGINX Configuration Mistakes.pptxHow to Avoid the Top 5 NGINX Configuration Mistakes.pptx
How to Avoid the Top 5 NGINX Configuration Mistakes.pptx
 

Recently uploaded

DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESmohitsingh558521
 
What is Artificial Intelligence?????????
What is Artificial Intelligence?????????What is Artificial Intelligence?????????
What is Artificial Intelligence?????????blackmambaettijean
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 

Recently uploaded (20)

DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
 
What is Artificial Intelligence?????????
What is Artificial Intelligence?????????What is Artificial Intelligence?????????
What is Artificial Intelligence?????????
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 

NGINX High-performance Caching

  • 1. NGINX High-performance Caching Introduced by Andrew Alexeev Presented by Owen Garrett Nginx, Inc.
  • 2. About this webinar Content Caching is one of the most effective ways to dramatically improve the performance of a web site. In this webinar, we’ll deep-dive into NGINX’s caching abilities and investigate the architecture used, debugging techniques and advanced configuration. By the end of the webinar, you’ll be well equipped to configure NGINX to cache content exactly as you need.
  • 3. BASIC PRINCIPLES OF CONTENT CACHING
  • 4. Basic Principles Internet N GET /index.html GET /index.html Used by: Browser Cache, Content Delivery Network and/or Reverse Proxy Cache
  • 5. Mechanics of HTTP Caching • Origin server declares cacheability of content Expires: Tue, 6 May 2014 02:28:12 GMT Cache-Control: public, max-age=60 X-Accel-Expires: 30 Last-Modified: Tue, 29 April 2014 02:28:12 GMT ETag: "3e86-410-3596fbbc“ • Requesting client honors cacheability – May issue conditional GETs
  • 6. What does NGINX cache? • Cache GET and HEAD with no Set-Cookie response • Uniqueness defined by raw URL or: proxy_cache_key $scheme$proxy_host$uri$is_args$args; • Cache time defined by – X-Accel-Expires – Cache-Control – Expires http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html
  • 8. NGINX Config proxy_cache_path /tmp/cache keys_zone=one:10m levels=1:2 inactive=60m; server { listen 80; server_name localhost; location / { proxy_pass http://localhost:8080; proxy_cache one; } }
  • 9. Caching Process Internet MISS Read request Wait? Check Cache Respond from cache cache_lock_timeout Response cacheable? HIT Stream to disk NGINX can use stale content under the following circumstances: proxy_cache_use_stale error | timeout | invalid_header | updating | http_500 | http_502 | http_503 | http_504 | http_403 | http_404 | off
  • 10. Caching is not just for HTTP • FastCGI – Functions much like HTTP • Memcache – Retrieve content from memcached server (must be prepopulated) • uwsgi and SCGI N HTTP FastCGI memcached uwsgi SCGI NGINX is more than just a reverse proxy
  • 11. HOW TO UNDERSTAND WHAT’S GOING ON
  • 12. Cache Instrumentation add_header X-Cache-Status $upstream_cache_status; MISS Response not found in cache; got from upstream. Response may have been saved to cache BYPASS proxy_cache_bypass got response from upstream. Response may have been saved to cache EXPIRED entry in cache has expired; we return fresh content from upstream STALE takes control and serves stale content from cache because upstream is not responding correctly UPDATING serve state content from cache because cache_lock has timed out and proxy_use_stale takes control REVALIDATED proxy_cache_revalidate verified that the current cached content was still valid (if-modified-since) HIT we serve valid, fresh content direct from cache
  • 13. Cache Instrumentation map $remote_addr $cache_status { 127.0.0.1 $upstream_cache_status; default “”; } server { location / { proxy_pass http://localhost:8002; proxy_cache one; add_header X-Cache-Status $cache_status; } }
  • 14. Extended Status Check out: demo.nginx.com http://demo.nginx.com/status.html http://demo.nginx.com/status
  • 15. HOW CONTENT CACHING FUNCTIONS IN NGINX
  • 16. How it works... • NGINX uses a persistent disk-based cache – OS Page Cache keeps content in memory, with hints from NGINX processes • We’ll look at: – How is content stored in the cache? – How is the cache loaded at startup? – Pruning the cache over time – Purging content manually from the cache
  • 17. How is cached content stored? proxy_cache_path /tmp/cache keys_zone=one:10m levels=1:2 max_size=40m; • Define cache key: proxy_cache_key $scheme$proxy_host$uri$is_args$args; • Get the content into the cache, then check the md5 $ echo -n "httplocalhost:8002/time.php" | md5sum 6d91b1ec887b7965d6a926cff19379b4 - • Verify it’s there: $ cat /tmp/cache/4/9b/6d91b1ec887b7965d6a926cff19379b4
  • 18. Loading cache from disk • Cache metadata stored in shared memory segment • Populated at startup from cache by cache loader proxy_cache_path path keys_zone=name:size [loader_files=number] [loader_threshold=time] [loader_sleep=time]; (100) (200ms) (50ms) – Loads files in blocks of 100 – Takes no longer than 200ms – Pauses for 50ms, then repeats
  • 19. Managing the disk cache • Cache Manager runs periodically, purging files that were inactive irrespective of cache time, deleteing files in LRU style if cache is too big proxy_cache_path path keys_zone=name:size [inactive=time] [max_size=size]; (10m) – Remove files that have not been used within 10m – Remove files if cache size exceeds max_size
  • 20. Purging content from disk • Find it and delete it – Relatively easy if you know the key • NGINX Plus – cache purge capability $ curl -X PURGE -D – "http://localhost:8001/*" HTTP/1.1 204 No Content Server: nginx/1.5.12 Date: Sat, 03 May 2014 16:33:04 GMT Connection: keep-alive X-Cache-Key: httplocalhost:8002/*
  • 22. Delayed caching proxy_cache_min_uses number; • Saves on disk writes for very cool caches Cache revalidation proxy_cache_revalidate on; • Saves on upstream bandwidth and disk writes
  • 23. Control over cache time proxy_cache_valid 200 302 10m; proxy_cache_valid 404 1m; • Priority is: – X-Accel-Expires – Cache-Control – Expires – proxy_cache_valid Set-Cookie response header means no caching
  • 24. Cache / don’t cache proxy_cache_bypass string ...; proxy_no_cache string ...; • Bypass the cache – go to origin; may cache result • No_Cache – if we go to origin, don’t cache result proxy_no_cache $cookie_nocache $arg_nocache $http_authorization; • Typically used with a complex cache key, and only if the origin does not sent appropriate cache-control reponses
  • 25. Multiple Caches proxy_cache_path /tmp/cache1 keys_zone=one:10m levels=1:2 inactive=60s; proxy_cache_path /tmp/cache2 keys_zone=two:2m levels=1:2 inactive=20s; • Different cache policies for different tenants • Pin caches to specific disks • Temp-file considerations – put on same disk!: proxy_temp_path path [level1 [level2 [level3]]];
  • 26. QUICK REVIEW – WHY CACHE?
  • 27. Why is page speed important? • We used to talk about the ‘N second rule’: – 10-second rule • (Jakob Nielsen, March 1997) – 8-second rule • (Zona Research, June 2001) – 4-second rule • (Jupiter Research, June 2006) – 3-second rule • (PhocusWright, March 2010) 12 10 8 6 4 2 0 Jan-97 Jan-98 Jan-99 Jan-00 Jan-01 Jan-02 Jan-03 Jan-04 Jan-05 Jan-06 Jan-07 Jan-08 Jan-09 Jan-10 Jan-11 Jan-12 Jan-13 Jan-14
  • 28. Google changed the rules “We want you to be able to get from one page to another as quickly as you turn the page on a book” Urs Hölzle, Google
  • 29. The costs of poor performance • Google: search enhancements cost 0.5s page load – Ad CTR dropped 20% • Amazon: Artificially increased page load by 100ms – Customer revenue dropped 1% • Walmart, Yahoo, Shopzilla, Edmunds, Mozilla… – All reported similar effects on revenue • Google Pagerank – Page Speed affects Page Rank – Time to First Byte is what appears to count
  • 30. NGINX Caching lets you Improve end-user performance Consolidate and simplify your web infrastructure Increase server capacity Insulate yourself from server failures
  • 31. Closing thoughts • 38% of the world’s busiest websites use NGINX • Check out the blogs on nginx.com • Future webinars: nginx.com/webinars Try NGINX F/OSS (nginx.org) or NGINX Plus (nginx.com)

Editor's Notes

  1. Why cache – three reasons – performance improvements, capacity improvements, and resilience to failures in backends
  2. Cool because is trivial to configure
  3. Error: an error occurred while establishing a connection with the server, passing a request to it, or reading the response header; Timeout: a timeout has occurred while establishing a connection with the server, passing a request to it, or reading the response header; invalid_header: a server returned an empty or invalid response; Updating – content is being refreshed and a lock is in place http_500: a server returned a response with the code 500; http_502: a server returned a response with the code 502; http_503: a server returned a response with the code 503; http_504: a server returned a response with the code 504; http_403: a server returned a response with the code 403; http_404: a server returned a response with the code 404; Off: disables passing a request to the next server.
  4. Complex. We make it really easy
  5. It uses same tech as static content that nginx is renowned for
  6. Get smart
  7. http://www.strangeloopnetworks.com/assets/images/infographic2.jpg http://www.thinkwithgoogle.com/articles/the-google-gospel-of-speed-urs-hoelzle.html http://moz.com/blog/how-website-speed-actually-impacts-search-ranking What does performance really mean to you? Revenue Ad CTR Employee and partner satisfaction What devices do your users use? What network conditions are they under?
  8. 1. Deliver all content at the speed of nginx 2. Compared to multiple point solutions 3. Cache for one second example 4. proxy_cache_use_stale