wordpress kitchen 2014 - Александр Стриха: Кеширование в wordpress

31

Upload: wordpress-kitchen

Post on 16-Jun-2015

64 views

Category:

Technology


2 download

DESCRIPTION

Если ваш блог читает не только мама и одноклассники, то вы наверняка сталкивались с проблемой нагрузки на ваш трехдолларовый хостинг. Мы расскажем как решить эту проблему, используя встроенные функции кеширования WordPress.

TRANSCRIPT

Page 1: WordPress Kitchen 2014 - Александр Стриха: Кеширование в WordPress

WordPressKitchen 2014

Page 2: WordPress Kitchen 2014 - Александр Стриха: Кеширование в WordPress

Александр Стриха[email protected]

Page 3: WordPress Kitchen 2014 - Александр Стриха: Кеширование в WordPress

WordPressКеширование в

Page 4: WordPress Kitchen 2014 - Александр Стриха: Кеширование в WordPress
Page 5: WordPress Kitchen 2014 - Александр Стриха: Кеширование в WordPress
Page 6: WordPress Kitchen 2014 - Александр Стриха: Кеширование в WordPress
Page 7: WordPress Kitchen 2014 - Александр Стриха: Кеширование в WordPress
Page 8: WordPress Kitchen 2014 - Александр Стриха: Кеширование в WordPress
Page 9: WordPress Kitchen 2014 - Александр Стриха: Кеширование в WordPress
Page 10: WordPress Kitchen 2014 - Александр Стриха: Кеширование в WordPress
Page 11: WordPress Kitchen 2014 - Александр Стриха: Кеширование в WordPress
Page 12: WordPress Kitchen 2014 - Александр Стриха: Кеширование в WordPress
Page 13: WordPress Kitchen 2014 - Александр Стриха: Кеширование в WordPress
Page 14: WordPress Kitchen 2014 - Александр Стриха: Кеширование в WordPress
Page 15: WordPress Kitchen 2014 - Александр Стриха: Кеширование в WordPress

IsCache = ???

Page 16: WordPress Kitchen 2014 - Александр Стриха: Кеширование в WordPress

IsCache = 1Money

Page 17: WordPress Kitchen 2014 - Александр Стриха: Кеширование в WordPress

W P_Object_Cache

wp_cache_set( 'key', 'value' );

$value = wp_cache_get( 'key' );

Page 18: WordPress Kitchen 2014 - Александр Стриха: Кеширование в WordPress

function get_free_products_count(){ if ( false === ( $count = wp_cache_get( 'free-products' ) ) ) { $count = big query wp_cache_set( 'free-products', $count ); } return $count;}

get_free_products_count(); // SQLget_free_products_count(); // Cacheget_free_products_count(); // Cache

Page 19: WordPress Kitchen 2014 - Александр Стриха: Кеширование в WordPress

wp-content/object-cache.php

Memcached https://wordpress.org/plugins/memcached/

Redishttps://github.com/ericmann/Redis-Object-Cache

Page 20: WordPress Kitchen 2014 - Александр Стриха: Кеширование в WordPress

Transients API

set_transient( 'key', 'value', $time );

$value = get_transient( 'key' );

Page 21: WordPress Kitchen 2014 - Александр Стриха: Кеширование в WordPress

if ( false === ( $value = get_transient( 'key' ) ) ) { $value = wp_remote_get( $url );

set_transient( 'key', $value, DAY_IN_SECONDS );}

Page 22: WordPress Kitchen 2014 - Александр Стриха: Кеширование в WordPress

if ( false === ( $value = get_transient( 'key' ) ) ) { $value = BIG QUERY

set_transient( 'key', $value, DAY_IN_SECONDS );}

Page 23: WordPress Kitchen 2014 - Александр Стриха: Кеширование в WordPress

add_action( 'save_post', function ( $post_id ) {

delete_transient( 'key' );

});

Page 24: WordPress Kitchen 2014 - Александр Стриха: Кеширование в WordPress

if ( false === ( $value = get_transient( 'key' ) ) ) {

ob_start();

get_sidebar();

$value = ob_get_clean();

set_transient( 'key', $value, DAY_IN_SECONDS );

}

Page 25: WordPress Kitchen 2014 - Александр Стриха: Кеширование в WordPress

add_action( 'cron_event', function( ) {

$value = wp_remote_get( $url );

set_transient( 'key', $value, DAY_IN_SECONDS );

});

Page 26: WordPress Kitchen 2014 - Александр Стриха: Кеширование в WordPress

wp_cache_postload( );

Advanced Cache

Page 27: WordPress Kitchen 2014 - Александр Стриха: Кеширование в WordPress

wp-content/advanced-cache.phpdefine( 'WP_CACHE', true );

WP Super Cachehttps://wordpress.org/plugins/wp-super-cache/

W3 Total Cachehttps://wordpress.org/plugins/w3-total-cache/

Batcachehttps://wordpress.org/plugins/batcache/

Page 28: WordPress Kitchen 2014 - Александр Стриха: Кеширование в WordPress

function wp_cache_postload( ) {

$key = 'page_cache' . $_SERVER[ 'REQUEST_URI' ];

if ( $html = get_transient( $key ) ) {

echo $html;

exit;

}

ob_ ob_start( function( $html ) use ( $key ) {

set_transient( $key, $html, HOUR_IN_SECONDS );

return $html;

});

}

Page 29: WordPress Kitchen 2014 - Александр Стриха: Кеширование в WordPress

Clean WP: 99

Object Cache: 116

Full Page Cache: 1

Response time (sec)

Page 30: WordPress Kitchen 2014 - Александр Стриха: Кеширование в WordPress
Page 31: WordPress Kitchen 2014 - Александр Стриха: Кеширование в WordPress

KEEPCALM

AND

USECACHE