Tengo una llamada de servidor bastante cara que necesito almacenar en caché durante 30 segundos. Sin embargo, parece que no puedo hacer que el caché expire.El elemento de caché temporal de Drupal 7 no caducará
En el código siguiente, después de la primera vez que se almacena en caché, nunca va a conseguir más allá de $ Regresar-> cache_data, incluso después de la hora() + 30 segundos.
Nota, puedo incluso imprimir $ Cache> expirará y definitivamente es ajustado a un tiempo pasado actualizaciones hace más de 30 segundos y nunca.
He despejado manualmente caché muchas veces para confirmar consigo los mismos resultados.
¿Hay algo que se vea mal con esto?
function mymodule_get_something($id) {
// set the unique cache id
$cid = 'id-'. $id;
// return data if there's an un-expired cache entry
// *** $cache ALWAYS gets populated with my expired data
if ($cache = cache_get($cid, 'cache_mymodule')) {
return $cache->data;
}
// set my super expensive data call here
$something = array('Double Decker Taco', 'Burrito Supreme');
// set the cache to expire in 30 seconds
cache_set($cid, $something, 'cache_mymodule', time() + 30);
// return my data
return $something;
}
Gracias por el control de cordura. – Coder1
Buen enfoque. +1 ... EDITAR: Me di cuenta de que era Clive. Por supuesto que fue un buen enfoque. –
Hola Clive, "la próxima limpieza general del caché" ¿qué es eso? drush cc all elimina tanto CACHE_TEMPORARY como CACHE_PERMANENT. Cuando ocurre un deslizamiento de caché general, ¿alguna idea? –