Principy cachování ve WordPressu

990 views
846 views

Published on

Slidy k přednášce prezentované na 2. WordPress konferenci - 17.5.2014, Hluboká nad Vlatvou

Published in: Technology
1 Comment
0 Likes
Statistics
Notes
  • Be the first to like this

No Downloads
Views
Total views
990
On SlideShare
0
From Embeds
0
Number of Embeds
236
Actions
Shares
0
Downloads
7
Comments
1
Likes
0
Embeds 0
No embeds

No notes for slide

Principy cachování ve WordPressu

  1. 1. Principy cachování ve WordPressu David Biňovec david.binovec@gmail.com david_binovec@parade.com http://david.binda.cz
  2. 2. Obsah přednášky ● Co je to cache, co cachovat ● Možnosti cachování - PHP a MySQL o Memcached, Alternative PHP Cache (APC) o MySQL Query Cache ● Page level a Object Cache ● Jak je WordPress na cache připravený o Transients API o WP_Object_Cache a wp_cache funkce o oEmbed cache
  3. 3. Co je to Cache a co cachovat? ● Ukládání dřívě získaných dat, nebo jejich kopie, tak, aby byly při dalších operacích k dispozici rychleji ● Cachovat lze skoro vše o celé stránky a objekty o výsledky dotazů do externí API, náročné výpočty ... ● … a ještě něco navíc o MySQL Query Cache o OpCode
  4. 4. MySQL Query Cache ● pouze identické a deterministické SELECT dotazy ● přetvrvává mezi jednotlivými sessions ● smazání relevantních dotazů po změně tabulky ● nedistribuovaná
  5. 5. Cache engines ● Memcached o distribuovaná (server dostupný přes telnet) o key - value pairs uložené v paměti serveru o PECL rozšíření pro PHP (memcached/memcache) ● Alternative PHP Cache (APC) o Opcode i user cache (PHP <= 5.4), APCu (PHP 5.5) o nedistribuovaná ● Statický soubor o např. mod_rewrite (WP Super Cache), CDN
  6. 6. Page Level vs. Object Cache ● Page level cache (např. WP Super Cache) o ukládá pouze celé stránky o každá stránka se musí vygenerovat celá sama o sobě se všemi DB, API a dalšími dotazy o obvykle nefunguje pro přihlášené ● Object cache (APC, Memcached, W3TC) o znovupoužitelná pro generování více stránek o funguje i pro přihlášené uživatele o použitelná také v administraci WordPressu
  7. 7. Page Level Cache ● HTML soubory uložené na disku o načítání pomocí PHP či mod_rewrite (WP Super Cache) ● memcached (Batcache) o lze využít i bez použití PHP přímo na serveru (NginX, Apache ...) ● CDN o cloudflare (W3TC) o jakýkoli jiný (WP Super Cache)
  8. 8. Jak zacachovat stránku ve WP
  9. 9. WP Super Cache - mod_rewrite
  10. 10. Object Cache ● cachujeme znovupoužitelné objekty o znovupoužitelné v rámci jednoho requestu o a hlavně znovupoužitelné napříč requesty ● objekt tvoří jeden, ale i více SQL dotazů o je výsledkem mnoha funkcí, metod … ● Například: o WP_User (capabilities, user_meta) o WP_Post ...
  11. 11. Jak je WP připravený na cachování ● Transients API o set_transient, get_transient, delete_transient o set_site_transient, get_site_transient … ● WP_Object_Cache třída a wp_cache funkce o wp-includes/cache.php  wp_cache_add, wp_cache_set, wp_cache_replace  wp_cache_get  wp_cache_delete, wp_cache_flush
  12. 12. Transients API ● dočasné ukládání cachovaných dat ● defaultně využívá tabulku wp_options o add_option s parametrem autoload = “no”  pokud nemá expiraci, pak autoload = “yes” o přidává dva řádky do tabulky  hodnotu transient  maximální expirační čas (nikoli garantovaný)
  13. 13. ● v jádře je implementace ukládající data do globální proměnné o z podstaty věci, defaultně, jen po dobu session ● má význam například při opakovaném dotazu do zatabáze o lze s klidným svědomím opakovaně volat například get_post_meta bez přetěžování databáze WP_Object_Cache
  14. 14. Kde se WP_Object_Cache používá ● get_metadata (post, user, comment ...) ● get_option (autoload options) ● get_post, get_user, get_comment, get_term ● transients ● ...
  15. 15. wp_cache funkce ● wp_cache_set($key, $data, $group, $expire) o defaultně bez expirace ($expire = 0) ● wp_cache_get( $key, $group ) o group umožnuje používat stejní klíče pro různé skupiny
  16. 16. Externí WP_Object_Cache - dropins ● dropins o wp-content/advanced-cache.php o wp-content/object-cache.php ● object-cache.php o zamezí načtění souboru wp-includes/wp_cache.php o znovu definuje WP_Object_Cache i wp_cache funkce o využívá libovolný externí cachovací engine  memcache, APC, souborvý systém ...
  17. 17. Cachování v post_meta tabulce ● oEmbed post_meta cache v jádře WP
  18. 18. WordPress Cachovací Pluginy ● WP Super Cache http://wordpress.org/plugins/wp-super- cache/ o page level cache využívající mod_rewrite ● W3 Total Cache http://wordpress.org/plugins/w3-total-cache/ o několik object-cache enginů ● Batcache http://wordpress.org/plugins/batcache/ ● object-cache.php dropins http://wordpress.org/plugins/memcached/ http://wordpress.org/plugins/apc/
  19. 19. Principy Cachování ve WP - Shrnutí ● Memcached, APC, MySQL Query Cache ● Page level vs. Object Cache o ideální je mix page level a object cache ● Transients API ● WP_Object_Cache a wp_cache funkce o dropins: object-cache.php, advanced-cache.php ● Cachování v post_meta tabulce

×