Caché total de W3 - actualización de la memoria caché programáticamente [cerrado]

19

Estoy creando un sitio web similar a Digg en WordPress.

Después de instalar W3 Total Cache, noté que ciertos elementos, como el número de votos (y los identificadores de votantes) por publicación, se almacenan en caché aunque no deberían (al menos no después de que un usuario vote por un artículo). Supongo que no es posible evitar que elementos específicos de una página se almacenen en caché (¿o sí?), Así que pensé en activar la actualización de la memoria caché de la página mediante programación.

¿Alguna sugerencia?

    
pregunta user1567 17.01.2011 - 14:20

6 respuestas

20

si desea vaciar el caché, puede hacerlo: el plugin tiene funciones para eso

<?php 

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

?>

y solo necesitas llamarlo así:

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

y esa es básicamente la respuesta a la pregunta en el título "actualización de la memoria caché programáticamente"

    
respondido por el Bainternet 17.01.2011 - 18:23
10

W3 Total Cache admite el almacenamiento en caché de fragmentos. De las preguntas frecuentes:

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 -->
    
respondido por el Rarst 17.01.2011 - 15:06
10

Para vaciar una sola página por post id en w3tc v0.9.3 encontré que esto funcionó:

if (function_exists('w3tc_pgcache_flush_post')){
 w3tc_pgcache_flush_post($post_id);
}
    
respondido por el user806052 20.03.2014 - 23:08
9

La solución de Bainternet no pareció funcionar para mí.

Estoy usando exitosamente este fragmento alternativo dentro de un complemento, cargado en la acción 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>');
}

Esperemos que esto ayude a alguien por ahí.

    
respondido por el Kevin Leary 19.09.2011 - 18:02
5

Nada de lo anterior funcionó para mí en mi complemento. Sin embargo esto funcionó! Confirmado trabajando para la versión 0.9.2.4 de w3tc.

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

hice un " $ wpdb- > get_results ("SELECT sb_settings . f_fb_app_id , sb_settings . f_fb_secret FROM sb_settings "); " y se sorprendió de que los valores f_fb_secret y f_fb_app_id fueran los mismos cada vez. Obviamente, fue w3tc el resultado de la consulta. Así que agregué un dbcache flush en mi página de modificación para la tabla sb_settings.

Si desea borrar la memoria caché de la página, entonces use w3tc_pgcache_flush en su lugar.

    
respondido por el Elrinth 10.04.2013 - 00:36
0

Use este fragmento de código para asegurarse de que su PHP se ejecuta independientemente de si el almacenamiento en caché está activado o desactivado. Sí, tienes que escribir / llamar a tu función dos veces.

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

(creo) así es como funciona:

  • Los condicionales mfunc reemplazan etiquetas php.
  • Si el almacenamiento en caché está DESACTIVADO , php en mfunc comentarios aparecen en su marca como comentarios HTML. <!-- mfunc echo "hello?"; --> Ten esto en cuenta dependiendo de lo feliz que estés de que la gente vea tu PHP (solo ocurre cuando el almacenamiento en caché está desactivado).
respondido por el Dominic 11.02.2012 - 02:03

Lea otras preguntas en las etiquetas