Top Banner
WordCamp Montreal 2014 Les données transitoires vous veulent du bien Julio Potier @boiteaweb boiteaweb.fr & wp-rocket.me
66

Les données transitoires (transients) vous veulent du bien

Nov 28, 2014

Download

Internet

Boiteaweb

Je parle bien sûr des transients, cette fameuse API qui ne vous veut que du bien. Voyons des cas concrets d’utilisation pour réduire les requêtes distances et ainsi gagner en performances de temps de chargement. L’auditoire apprendra à utiliser l’API “transient” de WordPress dans le but dé gagner en performances.
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Les données transitoires (transients) vous veulent du bien

WordCamp Montreal 2014

Les données

transitoires

vous veulent

du bien

Julio Potier@boiteaweb

boiteaweb.fr&

wp-rocket.me

Page 2: Les données transitoires (transients) vous veulent du bien
Page 3: Les données transitoires (transients) vous veulent du bien

Qu'est-ce ?

Pourquoi ?

Quand ?

Où ?

Comment ?

Help !

Page 4: Les données transitoires (transients) vous veulent du bien

Qu'est-ce ?

Pourquoi ?

Quand ?

Où ?

Comment ?

Help !

Page 5: Les données transitoires (transients) vous veulent du bien

/ˈtræn.zɪənt/

transient : nom commun,

• Chose temporaire.

Page 6: Les données transitoires (transients) vous veulent du bien

/ˈtræn.zɪənt/

L'API des Transients offre un moyen simple et standardisé de stocker des données mises en cache dans la base de données de façon temporaire en lui donnant un nom et un délai après lequel il expirera et sera supprimé.

Source : Codex

Page 7: Les données transitoires (transients) vous veulent du bien

L'API des Transients offre un moyen simple et standardisé de stocker des données mises en cache dans la base de données de façon temporaire en lui donnant un nom et un délai après lequel il expirera et sera supprimé.

Source : Codex

/ˈtræn.zɪənt/

- Pas que en BDD.

Page 8: Les données transitoires (transients) vous veulent du bien

L'API des Transients offre un moyen simple et standardisé de stocker des données mises en cache dans la base de données de façon temporaire en lui donnant un nom et un délai après lequel il expirera et sera supprimé.

Source : Codex

/ˈtræn.zɪənt/

- Pas que en BDD,

- Délai non obligatoire.

Page 9: Les données transitoires (transients) vous veulent du bien

L'API des Transients offre un moyen simple et standardisé de stocker des données mises en cache dans la base de données de façon temporaire en lui donnant un nom et un délai après lequel il expirera et sera supprimé.

Source : Codex

/ˈtræn.zɪənt/

- Pas que en BDD,

- Délai non obligatoire,

- Peut être supprimé avant expiration.

Page 10: Les données transitoires (transients) vous veulent du bien

L'API des Transients offre un moyen simple et standardisé de stocker des données mises en cache dans la base de données de façon temporaire en lui donnant un nom et un délai après lequel il expirera et sera supprimé.

Source : Codex

/ˈtræn.zɪənt/

- Pas que en BDD,

- Délai non obligatoire,

- Peut être supprimé avant expiration,

- Reste en base après expiration.

Page 11: Les données transitoires (transients) vous veulent du bien

L'API des Transients offre un moyen simple et standardisé de stocker des données mises en cache dans la base de données de façon temporaire en lui donnant un nom et un délai après lequel il expirera et sera supprimé.

Source : Codex

/ˈtræn.zɪənt/

- Pas que en BDD,

- Délai non obligatoire,

- Peut être supprimé avant expiration,

- Reste en base après expiration,

- Différent d'une option.

Page 12: Les données transitoires (transients) vous veulent du bien

Qu'est-ce ?

Pourquoi ?

Quand ?

Où ?

Comment ?

Help !

Page 13: Les données transitoires (transients) vous veulent du bien

Système de stockage

Gain de performance

=

Page 14: Les données transitoires (transients) vous veulent du bien

Système de stockage

Gain de performance

=

Système de cache

Page 15: Les données transitoires (transients) vous veulent du bien

Qu'est-ce ?

Pourquoi ?

Quand ?

Où ?

Comment ?

Help !

Page 16: Les données transitoires (transients) vous veulent du bien

En front-office

Page 17: Les données transitoires (transients) vous veulent du bien

Un même contenu est présentsur plusieurs pages.Ex : derniers commentaires, derniers articles en sidebar ...

En front-office

Page 18: Les données transitoires (transients) vous veulent du bien

Un même contenu est présentsur plusieurs pages.

Un contenu provenant d'une requête externe.

Ex : derniers commentaires, derniers articles en sidebar ...

Ex : nombre de followers, derniers tweets ...

En front-office

Page 19: Les données transitoires (transients) vous veulent du bien

Un même contenu est présentsur plusieurs pages.

Un contenu provenant d'une requête externe.

Ex : derniers commentaires, derniers articles en sidebar ...

Ex : nombre de followers, derniers tweets ...

Une requête maison coûteuse.Ex : grosse requête avec jointures dans des tables maison

En front-office

Page 20: Les données transitoires (transients) vous veulent du bien

En back-office

Page 21: Les données transitoires (transients) vous veulent du bien

Afficher un message pour unutilisateur particulier.Ex : retour d'une validation, erreur personnelle ...

En back-office

Page 22: Les données transitoires (transients) vous veulent du bien

Afficher un message pour unutilisateur particulier.Ex : retour d'une validation, erreur personnelle ...

En back-office

Page 23: Les données transitoires (transients) vous veulent du bien

Afficher un message pour unutilisateur particulier.Ex : retour d'une validation, erreur personnelle ...

En back-office

$delete_result = delete_plugins( $plugins );set_transient( 'plugins_delete_result_' . $user_ID, $delete_result );

$delete_result = get_transient( 'plugins_delete_result_' . $user_ID );delete_transient( 'plugins_delete_result_' . $user_ID );_e( 'The selected plugins have been <strong>deleted</strong>.' );

Page 24: Les données transitoires (transients) vous veulent du bien

Qu'est-ce ?

Pourquoi ?

Quand ?

Où ?

Comment ?

Help !

Page 25: Les données transitoires (transients) vous veulent du bien

Quelques exemples● Menus

● Blogroll

● Nuage de mots-clés

● Articles récents

● Derniers comm.

● Toute requête perso.

● Météo

● Radio

● Derniers tweets

● Friends/Followers

● Derniers membres

● Articles populaires

Page 26: Les données transitoires (transients) vous veulent du bien

Quelques exemples● Menus

● Blogroll

● Nuage de mots-clés

● Articles récents

● Derniers comm.

● Toute requête perso.

● Météo

● Radio

● Derniers tweets

● Friends/Followers

● Derniers membres

● Articles populaires

Expiration manuelle ? Automatique ? Longue ? Courte ?

Page 27: Les données transitoires (transients) vous veulent du bien

Quelques exemples● Menus

● Blogroll

● Nuage de mots-clés

● Articles récents

● Derniers comm.

● Toute requête perso.

● Météo

● Radio

● Derniers tweets

● Friends/Followers

● Derniers membres

● Articles populaires

0.5/1h

3/5mn

1/24h

24h

24h

12/24h

man.

man.

man.

man.

man.

?

Expiration manuelle ? Automatique ? Longue ? Courte ?

Page 28: Les données transitoires (transients) vous veulent du bien

Contre exemplePas sur des données live !

Page 29: Les données transitoires (transients) vous veulent du bien

Qu'est-ce ?

Pourquoi ?

Quand ?

Où ?

Comment ?

Help !

Page 30: Les données transitoires (transients) vous veulent du bien

BDD ou Cache Objet ?Mise en cache d'un transient

sans cache objet

Page 31: Les données transitoires (transients) vous veulent du bien

BDD ou Cache Objet ?Mise en cache d'un transient

avec cache objet(MemCache)

Page 32: Les données transitoires (transients) vous veulent du bien

Les fonctions de base

set_transient()

get_transient()

delete_transient()

Page 33: Les données transitoires (transients) vous veulent du bien

Les fonctions de base

set_site_transient()

get_site_transient()

delete_site_transient()

Page 34: Les données transitoires (transients) vous veulent du bien

*_site_transient() ne sont PAS des fonctions qui gérent la compatibilité avec les multisites.

Page 35: Les données transitoires (transients) vous veulent du bien

set_transient()

get_transient()

delete_transient()

Les fonctions de base

Page 36: Les données transitoires (transients) vous veulent du bien

set_transient( $transient, $value, $expiration=0)

Les fonctions de base

Page 37: Les données transitoires (transients) vous veulent du bien

set_transient( $transient, $value, $expiration=0)

Les fonctions de base

Page 38: Les données transitoires (transients) vous veulent du bien

set_transient( $transient, $value, $expiration=0)

_transient__transient_timeout_

Les fonctions de base

Page 39: Les données transitoires (transients) vous veulent du bien

set_transient( $transient, $value, $expiration=0)

_transient__transient_timeout_

Les fonctions de base

set_transient( 'super_plugin_' . md5( $uniq_id ) );// _transient_timeout_super_plugin_d41d8cd98f00b204e9800998ecf8427e= 64 ! MAX !!

Page 40: Les données transitoires (transients) vous veulent du bien

set_transient( $transient, $value, $expiration=0)

_transient__transient_timeout_

Les fonctions de base

set_transient( 'super_plugin_' . md5( $uniq_id ) );// _transient_timeout_super_plugin_d41d8cd98f00b204e9800998ecf8427e= 64 ! MAX !!

set_transient( 'super_plugin_' . date( 'dmy' ) );// super_plugin_160814, dès demain ce transient restera en base.

Page 41: Les données transitoires (transients) vous veulent du bien

set_transient( $transient, $value, $expiration=0)

Les fonctions de base

Page 42: Les données transitoires (transients) vous veulent du bien

set_transient( $transient, $value, $expiration=0)

Les fonctions de base

Chaînes,Entiers,Tableaux,Objets,Données serialisées.

4 Go max !

Page 43: Les données transitoires (transients) vous veulent du bien

set_transient( $transient, $value, $expiration=0)

Les fonctions de base

Chaînes,Entiers,Tableaux,Objets,Données serialisées.

PAS SimpleXML Object !

$xml = simplexml_load_file( $file );set_transient( 'xml_file', $xml ); // BOUM!

4 Go max !

Page 44: Les données transitoires (transients) vous veulent du bien

set_transient( $transient, $value, $expiration=0)

Les fonctions de base

Page 45: Les données transitoires (transients) vous veulent du bien

set_transient( $transient, $value, $expiration=0)

Les fonctions de base

- Une durée en sec. et pas une date.- Âge maximal et non pas garantie d'expiration.

Page 46: Les données transitoires (transients) vous veulent du bien

set_transient( $transient, $value, $expiration=0)

Les fonctions de base

- Une durée en sec. et pas une date.- Âge maximal et non pas garantie d'expiration.

Si cache objet, possiblement supprimé plus tôt.0 + pas de cache objet = toujours en BDD.Attention à AUTOLOAD !

Page 47: Les données transitoires (transients) vous veulent du bien

set_transient()

get_transient()

delete_transient()

Les fonctions de base

Page 48: Les données transitoires (transients) vous veulent du bien

get_transient( $transient)

Les fonctions de base

Page 49: Les données transitoires (transients) vous veulent du bien

get_transient( $transient)

Les fonctions de base

Page 50: Les données transitoires (transients) vous veulent du bien

get_transient( $transient)

Les fonctions de base

Vérifier avec === false

Page 51: Les données transitoires (transients) vous veulent du bien

get_transient( $transient)

Les fonctions de base

Vérifier avec === false

Le transient n'est supprimé que maintenant si son délai est expiré, sinon il reste en base de données.

Page 52: Les données transitoires (transients) vous veulent du bien

get_transient( $transient)

Les fonctions de base

Vérifier avec === false

Le transient n'est supprimé que maintenant si son délai est expiré, sinon il reste en base de données.

Attention ne déclenche pas le hook action :- "delete_transient_$transient" ;Mais :- "delete_option_transient_$transient",- "delete_option_transient_timeout_$transient",

Page 53: Les données transitoires (transients) vous veulent du bien

Démo de get_transient()

// Sans transientfunction baw_get_my_data() {

$data = my_external_api_request();// Do something with $data.return $data;

}

Page 54: Les données transitoires (transients) vous veulent du bien

Démo de get_transient()

// Avec transientfunction baw_get_my_data() {

$data = get_transient( 'baw_data' );if ( false === $data ) {

$data = my_external_api_request();set_transient( 'baw_data', $data, DAY_IN_SECONDS );

} // Do something with $data.return $data;

}

Page 55: Les données transitoires (transients) vous veulent du bien

Démo de get_transient()

// Avec cache persistantfunction baw_get_my_data() {

$data = wp_cache_get( 'baw_data', 'baw' );if ( false === $data ) {

$data = my_external_api_request();wp_cache_set( 'baw_data', $data, 'baw', DAY_IN_SECONDS );

} // Do something with $data.return $data;

}

Page 56: Les données transitoires (transients) vous veulent du bien

Démo de get_transient()

// Avec transientfunction baw_get_my_data() {

$data = get_transient( 'baw_data' );if ( false === $data ) {

$data = my_external_api_request();set_transient( 'baw_data', $data, DAY_IN_SECONDS );

} // Do something with $data.return $data;

}

Page 57: Les données transitoires (transients) vous veulent du bien

Démo de get_transient()

// Pas beau !$transient = 'my_transient';$test_timeout = get_option( "_transient_timeout_$transient" );if ( $test_timeout > time() ) {

$data = get_option( "_transient_$transient" );}// ...

Page 58: Les données transitoires (transients) vous veulent du bien

set_transient()

get_transient()

delete_transient()

Les fonctions de base

Page 59: Les données transitoires (transients) vous veulent du bien

delete_transient( $transient)

Les fonctions de base

Page 60: Les données transitoires (transients) vous veulent du bien

delete_transient( $transient)

Les fonctions de base

Page 61: Les données transitoires (transients) vous veulent du bien

delete_transient( $transient)

Les fonctions de base

Attention à la fausse bonne idée de purge :delete_option( "_transient_$transient" );Car ne fonctionne pas pour le cache objet !

Page 62: Les données transitoires (transients) vous veulent du bien

Démo de delete_transient()add_action( 'wp_scheduled_delete', 'delete_expired_db_transients' );function delete_expired_db_transients() {

if ( wp_using_ext_object_cache() ) { // magic return; }

global $wpdb;

$time = isset( $_SERVER['REQUEST_TIME'] ) ? (int) $_SERVER['REQUEST_TIME'] : time(); $expired = $wpdb->get_col( "SELECT option_name FROM {$wpdb->options} WHERE option_name LIKE '_transient_timeout%' AND option_value < {$time};" );

foreach ( $expired as $transient ) { $key = str_replace( '_transient_timeout_', '', $transient ); delete_transient( $key ); }

}// by @rarst - http://tinyurl.com/purge-transients

Page 63: Les données transitoires (transients) vous veulent du bien

delete_transient( $transient)

Les fonctions de base

Attention à la fausse bonne idée de purge :delete_option( "_transient_$transient" );Car ne fonctionne pas pour le cache objet !

Déclenche le hook action :- "delete_transient_$transient" ;

Page 64: Les données transitoires (transients) vous veulent du bien

Qu'est-ce ?

Pourquoi ?

Quand ?

Où ?

Comment ?

Help !

Page 65: Les données transitoires (transients) vous veulent du bien

Plugins !

http://wordpress.org/plugins/artiss-transient-cleaner/

http://wordpress.org/plugins/delete-expired-transients/

http://wordpress.org/plugins/transients-manager/

http://wordpress.org/plugins/debug-bar-transients/

Page 66: Les données transitoires (transients) vous veulent du bien

WordCamp Montreal 2014

Merci !

Questions ?ou posez les moi

au Happiness Bar ;)

Julio Potier@boiteaweb

boiteaweb.fr&

wp-rocket.me