SlideShare a Scribd company logo
1 of 28
Download to read offline
Django book
Chapter 15 - Caching
Alfred
13年9月3⽇日星期⼆二
Basic
13年9月3⽇日星期⼆二
Why
Where
Memory or FileSystem
13年9月3⽇日星期⼆二
Setting.py
Django Doc
Django Book
13年9月3⽇日星期⼆二
Types
13年9月3⽇日星期⼆二
Memory Cache
• libmemcache http://gijsbert.org/cmemcache/
• python memcache ftp://ftp.tummy.com/pub/python-memcached/
13年9月3⽇日星期⼆二
DB Cache
Create Cache Table
Link Cache Table
13年9月3⽇日星期⼆二
File System Cache
file:// + path
The directory path should be absolute – that is, it should
start at the root of your filesystem. It doesn’t matter whether
you put a slash at the end of the setting.
if your server runs as the user apache, make sure the directory/
var/tmp/django_cache exists and is readable and writable by the
user apache.
13年9月3⽇日星期⼆二
[Dev]
Local Memory Cache
Note that each process will have its own private cache instance, which
means no cross-process caching is possible. This obviously also
means the local memory cache isn’t particularly memory-efficient, so
it’s probably not a good choice for production environments. It’s nice for
development.
13年9月3⽇日星期⼆二
[Dev]
Dummy Cache
Django comes with a “dummy” cache that doesn’t actually cache – it just
implements the cache interface without doing anything.
It s useful if you have a production site that uses heavy-duty caching in
various places but a development/test environment where you don’t want to
cache and don’t want to have to change your code to special-case the latter.
13年9月3⽇日星期⼆二
[Dev]
Implementation and others
• If you’re building your own backend, you can use the
standard cache backends as reference implementations.
You’ll find the code in the django/core/cache/backends/
directory of the Django source.
13年9月3⽇日星期⼆二
Backend Arguments
• Use URI to set arguments
• timeout
• max_entries (locmem, db, fs)
• cull_percentage ( n => 1/n)
13年9月3⽇日星期⼆二
Use Cache
13年9月3⽇日星期⼆二
Per-Site Cache
• Order of middleware is important.
• CACHE_MIDDLEWARE_SECONDS – The number of seconds each page should be
cached.
• CACHE_MIDDLEWARE_KEY_PREFIX – If the cache is shared across multiple sites
using the same Django installation, set this to the name of the site, or some
other string that is unique to this Django instance, to prevent key collisions.
Use an empty string if you don’t care.
• CACHE_MIDDLEWARE_ANONYMOUS_ONLY	
  -­‐	
  Cache the only anonymous page.
Related with AuthenticationMiddleware.
13年9月3⽇日星期⼆二
Per-Site Cache ( cont. )
• Middleware will modify the header in each HttpResponse
• Sets the Last-­‐Modified header to the current date/time
when a fresh (uncached) version of the page is requested.
• Sets the Expires header to the current date/time plus the
defined CACHE_MIDDLEWARE_SECONDS.
• Sets the Cache-­‐Control header to give a max age for the
page – again, from theCACHE_MIDDLEWARE_SECONDS setting.
django.views.decorators.cache	
  can	
  set	
  life-­‐time	
  per	
  view,
and	
  the	
  priority	
  is	
  higher	
  than	
  site	
  if	
  the	
  time	
  is	
  longer.
13年9月3⽇日星期⼆二
Cache PerView
By decorator
The per-view cache, like the per-site cache, is keyed off of the URL. If
multiple URLs point at the same view, each URL will be cached
separately.
foo/1/, foo/12/ is separate cache.
13年9月3⽇日星期⼆二
Delay the cache
declaration
• The code, my_view can be reused in
another place.
13年9月3⽇日星期⼆二
Cache in template
Basic
Per User
Var setting
13年9月3⽇日星期⼆二
API
13年9月3⽇日星期⼆二
Set Cache
Do not store None
13年9月3⽇日星期⼆二
Notice and Control
13年9月3⽇日星期⼆二
Types of upstream
cache
• Your ISP may cache certain pages, so if you requested a page from http://
example.com/, your ISP would send you the page without having to access
example.com directly.
• Your Django Web site may sit behind a proxy cache, such as Squid Web
Proxy Cache (http://www.squid-cache.org/), that caches pages for
performance. In this case, each request first would be handled by the proxy,
and it would be passed to your application only if needed.
• Your Web browser caches pages, too. If a Web page sends out the
appropriate headers, your browser will use the local cached copy for
subsequent requests to that page, without even contacting the Web page
again to see whether it has changed.
13年9月3⽇日星期⼆二
Vary Header
if this page produces different content based on some
difference in request headers – such as a cookie, or a
language, or a user-agent – you’ll need to use the Vary header
to tell caching mechanisms that the page output depends on
those things.
13年9月3⽇日星期⼆二
Vary Header (cont.)
13年9月3⽇日星期⼆二
Private
A user usually faces two kinds of caches: his or her own browser cache
(a private cache) and his or her provider’s cache (a public cache). Ex.
Back account should be private.
13年9月3⽇日星期⼆二
Cache Control
• public=True
• private=True
• no_cache=True
• no_transform=True
• must_revalidate=True
• proxy_revalidate=True
• max_age=num_seconds
• s_maxage=num_seconds
13年9月3⽇日星期⼆二
Disable Cache
13年9月3⽇日星期⼆二
Thanks
13年9月3⽇日星期⼆二

More Related Content

What's hot

T3DD12 Caching with Varnish
T3DD12 Caching with VarnishT3DD12 Caching with Varnish
T3DD12 Caching with Varnish
AOE
 
Scaling wordpress for high traffic
Scaling wordpress for high trafficScaling wordpress for high traffic
Scaling wordpress for high traffic
Roshan Bhattarai
 
Roshan Bhattarai: Scaling WordPress for high traffic sites
Roshan Bhattarai: Scaling WordPress for high traffic sitesRoshan Bhattarai: Scaling WordPress for high traffic sites
Roshan Bhattarai: Scaling WordPress for high traffic sites
wpnepal
 
WordPress Performance & Scalability
WordPress Performance & ScalabilityWordPress Performance & Scalability
WordPress Performance & Scalability
Joseph Scott
 

What's hot (20)

Speeding Up The Snail
Speeding Up The SnailSpeeding Up The Snail
Speeding Up The Snail
 
2008 MySQL Conference Recap
2008 MySQL Conference Recap2008 MySQL Conference Recap
2008 MySQL Conference Recap
 
T3DD12 Caching with Varnish
T3DD12 Caching with VarnishT3DD12 Caching with Varnish
T3DD12 Caching with Varnish
 
Memcached Presentation
Memcached PresentationMemcached Presentation
Memcached Presentation
 
Scaling wordpress for high traffic
Scaling wordpress for high trafficScaling wordpress for high traffic
Scaling wordpress for high traffic
 
Roshan Bhattarai: Scaling WordPress for high traffic sites
Roshan Bhattarai: Scaling WordPress for high traffic sitesRoshan Bhattarai: Scaling WordPress for high traffic sites
Roshan Bhattarai: Scaling WordPress for high traffic sites
 
Using memcache to improve php performance
Using memcache to improve php performanceUsing memcache to improve php performance
Using memcache to improve php performance
 
Caching basics in PHP
Caching basics in PHPCaching basics in PHP
Caching basics in PHP
 
Varnish bof
Varnish bofVarnish bof
Varnish bof
 
Super performing websites with TYPO3 and Varnish
Super performing websites with TYPO3 and VarnishSuper performing websites with TYPO3 and Varnish
Super performing websites with TYPO3 and Varnish
 
Memcache
MemcacheMemcache
Memcache
 
Caching in WordPress
Caching in WordPressCaching in WordPress
Caching in WordPress
 
How to reduce database load using Memcache
How to reduce database load using MemcacheHow to reduce database load using Memcache
How to reduce database load using Memcache
 
Wordpress hosting canada
Wordpress hosting canadaWordpress hosting canada
Wordpress hosting canada
 
Shared Hosting Hepsia.Co plan and feature
Shared Hosting Hepsia.Co plan and featureShared Hosting Hepsia.Co plan and feature
Shared Hosting Hepsia.Co plan and feature
 
WordPress Performance & Scalability
WordPress Performance & ScalabilityWordPress Performance & Scalability
WordPress Performance & Scalability
 
Zend Con 2008 Slides
Zend Con 2008 SlidesZend Con 2008 Slides
Zend Con 2008 Slides
 
Understanding Web Cache
Understanding Web CacheUnderstanding Web Cache
Understanding Web Cache
 
Speed up your site with Varnish
Speed up your site with VarnishSpeed up your site with Varnish
Speed up your site with Varnish
 
Performance all teh things
Performance all teh thingsPerformance all teh things
Performance all teh things
 

Similar to Django book15 caching

Drupalcamp Estonia - High Performance Sites
Drupalcamp Estonia - High Performance SitesDrupalcamp Estonia - High Performance Sites
Drupalcamp Estonia - High Performance Sites
drupalcampest
 
Cloud computing 3702
Cloud computing 3702Cloud computing 3702
Cloud computing 3702
Jess Coburn
 
Jug Lugano - Scale over the limits
Jug Lugano - Scale over the limitsJug Lugano - Scale over the limits
Jug Lugano - Scale over the limits
Davide Carnevali
 

Similar to Django book15 caching (20)

Caching in Kentico 11
Caching in Kentico 11Caching in Kentico 11
Caching in Kentico 11
 
Drupalcamp Estonia - High Performance Sites
Drupalcamp Estonia - High Performance SitesDrupalcamp Estonia - High Performance Sites
Drupalcamp Estonia - High Performance Sites
 
Drupalcamp Estonia - High Performance Sites
Drupalcamp Estonia - High Performance SitesDrupalcamp Estonia - High Performance Sites
Drupalcamp Estonia - High Performance Sites
 
Scaling PHP apps
Scaling PHP appsScaling PHP apps
Scaling PHP apps
 
Caching and Its Main Types
Caching and Its Main TypesCaching and Its Main Types
Caching and Its Main Types
 
cache concepts and varnish-cache
cache concepts and varnish-cachecache concepts and varnish-cache
cache concepts and varnish-cache
 
WordPress at Peak Performance (Radio Edit)
WordPress at Peak Performance (Radio Edit)WordPress at Peak Performance (Radio Edit)
WordPress at Peak Performance (Radio Edit)
 
Caching in drupal
Caching in drupalCaching in drupal
Caching in drupal
 
Oracle UCM: Web Site Performance Tuning
Oracle UCM: Web Site Performance TuningOracle UCM: Web Site Performance Tuning
Oracle UCM: Web Site Performance Tuning
 
Scalable Django Architecture
Scalable Django ArchitectureScalable Django Architecture
Scalable Django Architecture
 
Drupal Performance - SerBenfiquista.com Case Study
Drupal Performance - SerBenfiquista.com Case StudyDrupal Performance - SerBenfiquista.com Case Study
Drupal Performance - SerBenfiquista.com Case Study
 
Cloud computing 3702
Cloud computing 3702Cloud computing 3702
Cloud computing 3702
 
Azure appfabric caching intro and tips
Azure appfabric caching intro and tipsAzure appfabric caching intro and tips
Azure appfabric caching intro and tips
 
lessons from managing a pulsar cluster
 lessons from managing a pulsar cluster lessons from managing a pulsar cluster
lessons from managing a pulsar cluster
 
MNPHP Scalable Architecture 101 - Feb 3 2011
MNPHP Scalable Architecture 101 - Feb 3 2011MNPHP Scalable Architecture 101 - Feb 3 2011
MNPHP Scalable Architecture 101 - Feb 3 2011
 
dh-slides-perf.ppt
dh-slides-perf.pptdh-slides-perf.ppt
dh-slides-perf.ppt
 
dh-slides-perf.ppt
dh-slides-perf.pptdh-slides-perf.ppt
dh-slides-perf.ppt
 
Tumbleweed intro
Tumbleweed introTumbleweed intro
Tumbleweed intro
 
Caching in Drupal 8
Caching in Drupal 8Caching in Drupal 8
Caching in Drupal 8
 
Jug Lugano - Scale over the limits
Jug Lugano - Scale over the limitsJug Lugano - Scale over the limits
Jug Lugano - Scale over the limits
 

Recently uploaded

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Victor Rentea
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Victor Rentea
 

Recently uploaded (20)

AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKSpring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 

Django book15 caching

  • 1. Django book Chapter 15 - Caching Alfred 13年9月3⽇日星期⼆二
  • 6. Memory Cache • libmemcache http://gijsbert.org/cmemcache/ • python memcache ftp://ftp.tummy.com/pub/python-memcached/ 13年9月3⽇日星期⼆二
  • 7. DB Cache Create Cache Table Link Cache Table 13年9月3⽇日星期⼆二
  • 8. File System Cache file:// + path The directory path should be absolute – that is, it should start at the root of your filesystem. It doesn’t matter whether you put a slash at the end of the setting. if your server runs as the user apache, make sure the directory/ var/tmp/django_cache exists and is readable and writable by the user apache. 13年9月3⽇日星期⼆二
  • 9. [Dev] Local Memory Cache Note that each process will have its own private cache instance, which means no cross-process caching is possible. This obviously also means the local memory cache isn’t particularly memory-efficient, so it’s probably not a good choice for production environments. It’s nice for development. 13年9月3⽇日星期⼆二
  • 10. [Dev] Dummy Cache Django comes with a “dummy” cache that doesn’t actually cache – it just implements the cache interface without doing anything. It s useful if you have a production site that uses heavy-duty caching in various places but a development/test environment where you don’t want to cache and don’t want to have to change your code to special-case the latter. 13年9月3⽇日星期⼆二
  • 11. [Dev] Implementation and others • If you’re building your own backend, you can use the standard cache backends as reference implementations. You’ll find the code in the django/core/cache/backends/ directory of the Django source. 13年9月3⽇日星期⼆二
  • 12. Backend Arguments • Use URI to set arguments • timeout • max_entries (locmem, db, fs) • cull_percentage ( n => 1/n) 13年9月3⽇日星期⼆二
  • 14. Per-Site Cache • Order of middleware is important. • CACHE_MIDDLEWARE_SECONDS – The number of seconds each page should be cached. • CACHE_MIDDLEWARE_KEY_PREFIX – If the cache is shared across multiple sites using the same Django installation, set this to the name of the site, or some other string that is unique to this Django instance, to prevent key collisions. Use an empty string if you don’t care. • CACHE_MIDDLEWARE_ANONYMOUS_ONLY  -­‐  Cache the only anonymous page. Related with AuthenticationMiddleware. 13年9月3⽇日星期⼆二
  • 15. Per-Site Cache ( cont. ) • Middleware will modify the header in each HttpResponse • Sets the Last-­‐Modified header to the current date/time when a fresh (uncached) version of the page is requested. • Sets the Expires header to the current date/time plus the defined CACHE_MIDDLEWARE_SECONDS. • Sets the Cache-­‐Control header to give a max age for the page – again, from theCACHE_MIDDLEWARE_SECONDS setting. django.views.decorators.cache  can  set  life-­‐time  per  view, and  the  priority  is  higher  than  site  if  the  time  is  longer. 13年9月3⽇日星期⼆二
  • 16. Cache PerView By decorator The per-view cache, like the per-site cache, is keyed off of the URL. If multiple URLs point at the same view, each URL will be cached separately. foo/1/, foo/12/ is separate cache. 13年9月3⽇日星期⼆二
  • 17. Delay the cache declaration • The code, my_view can be reused in another place. 13年9月3⽇日星期⼆二
  • 18. Cache in template Basic Per User Var setting 13年9月3⽇日星期⼆二
  • 20. Set Cache Do not store None 13年9月3⽇日星期⼆二
  • 22. Types of upstream cache • Your ISP may cache certain pages, so if you requested a page from http:// example.com/, your ISP would send you the page without having to access example.com directly. • Your Django Web site may sit behind a proxy cache, such as Squid Web Proxy Cache (http://www.squid-cache.org/), that caches pages for performance. In this case, each request first would be handled by the proxy, and it would be passed to your application only if needed. • Your Web browser caches pages, too. If a Web page sends out the appropriate headers, your browser will use the local cached copy for subsequent requests to that page, without even contacting the Web page again to see whether it has changed. 13年9月3⽇日星期⼆二
  • 23. Vary Header if this page produces different content based on some difference in request headers – such as a cookie, or a language, or a user-agent – you’ll need to use the Vary header to tell caching mechanisms that the page output depends on those things. 13年9月3⽇日星期⼆二
  • 25. Private A user usually faces two kinds of caches: his or her own browser cache (a private cache) and his or her provider’s cache (a public cache). Ex. Back account should be private. 13年9月3⽇日星期⼆二
  • 26. Cache Control • public=True • private=True • no_cache=True • no_transform=True • must_revalidate=True • proxy_revalidate=True • max_age=num_seconds • s_maxage=num_seconds 13年9月3⽇日星期⼆二