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 d'identifiants d'électeurs) 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.
Aucune suggestion?
si vous voulez vider le cache, vous pouvez le faire: le plugin a des fonctions pour ça
<?php
flush_pgcache() //page cache
flush_dbcache() // database cache
flush_minify() // minify cache
flush_all() //all caches
?>
et vous avez juste besoin de l'appeler comme ceci:
<?php
$w3_plugin_totalcache->flush_all();
?>
et c’est essentiellement la réponse à la question dans le titre "Mise à jour du cache par programmation"
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);
}
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 -->
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>');
}
Espérons que cela aide quelqu'un là-bas.
Rien de ce qui précède n'a fonctionné pour moi dans mon plugin. Cependant cela a fonctionné! Confirmé de travail 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 j'ai été surpris que les valeurs f_fb_secret et f_fb_app_id soient identiques à chaque fois. C'était évidemment le w3tc qui mettait en cache le résultat de la requête. J'ai donc ajouté une séquence dbcache dans ma page de modification pour la table sb_settings.
Si vous souhaitez vider le cache de la page, utilisez simplement w3tc_pgcache_flush à la place.
Utilisez cet extrait pour vous assurer que votre PHP est exécuté, 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:
<!-- mfunc echo "hello?"; -->
Gardez cela à l'esprit en fonction de votre joie de voir votre PHP (uniquement lorsque la mise en cache est désactivée).