2012-03-07 5 views
2

J'utilise Wordpress et j'ai développé des plugins spécifiques au site, en plus mon thème est personnalisé pour répondre aux exigences des plugins dans le backend.Quand utiliser les transitoires, quand ne pas?

Les derniers jours j'ai tripoté avec des transitoires dans Wordpress. Dans certains didacticiels, ils disent "Si vous utilisez des requêtes personnalisées et que leurs résultats sont cachables: Utilisez un transitoire". Ça sonne bien mais je me demande quand utiliser les transitoires pour obtenir un réel avantage. Je veux dire, même en utilisant des transitoires, il doit y avoir au moins deux requêtes en arrière-plan, n'est-ce pas? Le premier pour vérifier la validité, le second pour le transitoire lui-même.

Alors est-il vraiment utile d'utiliser un transitoire, c'est-à-dire pour une WP_Query personnalisée? Merci beaucoup pour votre aide et vos pensées.

Répondre

3

Cela semble assez simple. C'est une classe d'aide littérale qui vous permet de stocker des objets de manière 'memcache'. Vous devez d'abord définir le transitoire

function do_something_here($callback_param = 'value'){ 
    $key = 'do_something_' . $callback_param;//set the name of our transient equal to the value of the callback param being passed in the function. 
    $my_query = get_transient($myKey); //if we've stored this request before, then use it. 
    if($my_query !=== false){ 
    //we found a previous existing version of this query. let's use it. 
    return $my_query; 
    }else{ 
    //it doesn't exist, we need to build the transient. 
    //do our database querying here, global $wpdb; etc 
    //We are going to pretend our returned variable is 'george' 
    $value = george; 
    $length = 60*60*24; //how long do we want the transient to exist? 1 day here. 
    set_transient($key, $value, $length); 
    return $value; 
    } 
} 

Maintenant que nous avons créé notre déclencheur et lié au nom de la « touche $ », nous pouvons accéder à tout moment en utilisant la valeur exacte de cette clé implique (que nous avons déclaré précédemment) . En utilisant ce format, vous pouvez stocker des requêtes dans un monde semblable à un cache et les utiliser pour générer vos réponses. Ceci est similaire à l'utilisation des événements 'trigger' dans MySQL. En fait, c'est une partie d'une technique communément appelée longue interrogation.

+0

Merci pour votre réponse. Mais la question en était une autre, désolé de vous induire en erreur: l'utilisation d'un transitoire est-elle plus efficace qu'un simple WP_Query()? Dans mon imagination, l'utilisation d'un transitoire nécessite plus de ressources et de requêtes que la sélection de messages via WP_Query ('cat = 32'); – Phil

+0

Cela dépend de la méthode et des données. Si vous avez une requête énorme et longue, nous pouvons la stocker en tant que transitoire. Alors cette valeur sera toujours disponible en utilisant notre appel transitoire, qui ne nécessite pas d'interroger la base de données, il le surveille simplement pour un changement de valeurs. Cela fonctionne un peu comme memcache comme je l'ai mentionné. Dans ce cas, les transitoires sont un moyen plus efficace de l'utiliser sur les sites qui ont beaucoup de requêtes en cours et plusieurs morceaux de données. Ou, pour les sites qui nécessitent des choses comme la technologie Push (Long Polling, Comet, etc) -> http://en.wikipedia.org/wiki/Push_technology – Ohgodwhy

+0

Mais quand est une requête "énorme" et quand est l'utilisation de transitoire " énorme "par rapport à la requête elle-même? Lorsque l'on sélectionne cinq messages d'une seule table, sans jointures ou sous-requêtes: la requête simple n'est-elle pas plus rapide et efficace que la mise en cache du résultat dans un transitoire et la demande du transitoire, même si les cinq posts restent les mêmes? – Phil

Questions connexes