Cache total W3 - Actualisation du cache par programmation [fermée]

19

Je construis un site Web similaire à Digg dans WordPress.

Après l'installation de W3 Total Cache, j'ai remarqué que certains éléments, tels que le nombre de votes (et les identifiants d'électeur) par publication, sont mis en cache, même s'ils ne devraient pas l'être (du moins pas après qu'un utilisateur a voté pour un article). Je suppose qu'il n'est pas possible d'empêcher la mise en cache d'éléments spécifiques dans une page (ou s'agit-il?), Alors j'ai pensé à déclencher l'actualisation du cache de page par programme.

Des suggestions?

    
posée user1567 17.01.2011 - 14:20

6 réponses

20

si vous voulez vider le cache, vous pouvez le faire: le plugin a des fonctions pour que

<?php 

flush_pgcache()  //page cache
flush_dbcache()  // database cache
flush_minify()  // minify cache
flush_all() //all caches

?>

et il vous suffit de l'appeler comme suit:

<?php 
 $w3_plugin_totalcache->flush_all();
?>

et c'est essentiellement la réponse à la question dans le titre "actualiser le cache par programmation"

    
réponse donnée Bainternet 17.01.2011 - 18:23
10

W3 Total Cache prend en charge la mise en cache de fragments. De la FAQ:

How do I implement fragment caching? 

Edit your templates to with the following syntax to ensure that dynamic features remain so:

Example 1:
<!-- mfunc any PHP code --><!-- /mfunc -->

Example 2:
<!-- mfunc -->any PHP code<!-- /mfunc -->

Example 3:
<!--MFUNC           -->
                                      echo rand();
<!--/mfunc -->

Example 4:
<!-- mclude path/to/file.php --><!-- /mclude -->

Example 5:
<!-- mclude -->path/to/file.php<!-- /mclude -->
    
réponse donnée Rarst 17.01.2011 - 15:06
10

Pour vider une seule page par identifiant de poste dans w3tc v0.9.3, j'ai trouvé que cela fonctionnait:

if (function_exists('w3tc_pgcache_flush_post')){
 w3tc_pgcache_flush_post($post_id);
}
    
réponse donnée user806052 20.03.2014 - 23:08
9

La solution de Bainternet ne semblait pas fonctionner pour moi.

J'utilise avec succès cet extrait de code alternatif dans un plug-in, chargé à l'action admin_init :

// Clear all W3 Total Cache
if( class_exists('W3_Plugin_TotalCacheAdmin') )
{
    $plugin_totalcacheadmin = & w3_instance('W3_Plugin_TotalCacheAdmin');

    $plugin_totalcacheadmin->flush_all();

    echo __('<div class="updated"><p>All <strong>W3 Total Cache</strong> caches successfully emptied.</p></div>');
}

J'espère que cela aidera quelqu'un là-bas.

    
réponse donnée Kevin Leary 19.09.2011 - 18:02
5

Rien de ce qui précède n'a fonctionné pour moi dans mon plugin. Cependant cela a fonctionné! Confirmé de travailler pour la version 0.9.2.4 de w3tc.

if (function_exists('w3tc_dbcache_flush')) { w3tc_dbcache_flush(); }

j'ai fait un " $ wpdb- > get_results ("SELECT sb_settings . f_fb_app_id , sb_settings . f_fb_secret FROM sb_settings "); " et a été surpris que les valeurs f_fb_secret et f_fb_app_id soient les mêmes à chaque fois. C'était évidemment le w3tc qui mettait en cache le résultat de la requête. J'ai donc ajouté une couleur dbcache dans ma page de modification pour la table sb_settings.

Si vous souhaitez vider le cache de la page, utilisez plutôt w3tc_pgcache_flush.

    
réponse donnée Elrinth 10.04.2013 - 00:36
0

Utilisez cet extrait pour vous assurer que votre PHP s'exécute, que la mise en cache soit activée ou non. Oui, vous devez écrire / appeler votre fonction deux fois.

<!-- mfunc echo 'caching ON'; --><?php echo 'caching OFF'; ?><!-- /mfunc -->

(je pense) voici comment cela fonctionne:

  • Les conditions mfunc remplacent les balises php.
  • Si la mise en cache est DÉSACTIVÉ , les commentaires php dans mfunc apparaissent dans votre balisage sous forme de commentaires HTML. <!-- mfunc echo "hello?"; --> Gardez cela à l'esprit en fonction de votre joie de voir votre PHP (cela ne se produit que lorsque la mise en cache est désactivée).
réponse donnée Dominic 11.02.2012 - 02:03

Lire d'autres questions sur les étiquettes