30 saniye boyunca önbelleğe almam gereken oldukça pahalı bir sunucu çağrısı var. Ancak, önbelleğin süresinin dolmasını sağlayamadığım görünüyor.Drupal 7 geçici önbellek ürününün son kullanma tarihi geç
Aşağıdaki kodda, önbellek ilk kez önbelleğe alındığında, (+ 30 saniye) süresinden sonra bile hiçbir zaman $ return-> cache_data değerini alamaz.
Not: Hatta $ cache-> sona erme yazdırabilirsiniz ve kesinlikle 30 saniye önce bir zamana ayarlanır ve asla güncelleştirilmez.
Aynı sonuçları aldığımı doğrulamak için birçok kez önbelleği el ile temizledim.
Bu konuda herhangi bir sorun var mı?
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;
}
Teşekkür için:
Ben doldu eğer etrafında basit bir şekilde sadece manuel önbellek kontrolünden sonra geçerlilik süresini test etmek, ve bu önbellek nesne tekrar kurulur kadar düşürdüm olacağını düşünüyorum sağlık kontrolü. – Coder1Güzel yaklaşım. +1 ... EDIT: Sadece Clive olduğunu fark ettim. Tabii ki bu iyi bir yaklaşımdı. –
Hello Clive, "sonraki genel önbellek" nedir? drush cc tümü hem CACHE_TEMPORARY hem de CACHE_PERMANENT öğelerini kaldırır. Genel önbellek tokatlama gerçekleştiğinde, herhangi bir fikir? –