Muster für das clearing von Zend Cache
Begann ich mit Zend Cache (APC back-End) und alles ist gut in Bezug auf die Rückkehr zwischengespeicherten Werte drücken Sie anstelle des Schlagens jedes mal die Datenbank. Jedoch hier mein problem:
$cache_key = 'getrebates_'.$operator_code;
if(PP_Model_CacheService::exists($cache_key)) {
$cached_values = PP_Model_CacheService::load($cache_key);
} else {
//hits the db
$cached_values = $this->getAll($operator_code);
PP_Model_CacheService::save($cached_values, $cache_key);
}
return $cached_values;
Jeder Betreiber hat seine eigene Rabatte, die variieren zwischen den Betreibern, wenn ich nun die Datenbank ändern und löschen müssen Sie die Vergütung für alle Betreiber, wie kann ich dies tun?
Kann ich verwenden $Cache->clean(), aber wird klar, dass die anderen caches (nicht nur auf den Rabatt-cache für jeden Betreiber). Wenn ich eine Schleife durch alle Betreiber:
foreach($operator_codes AS $operator_code) {
$cache_key = 'getrebates_'.$operator_code;
$cache->delete($cache_key)
}
Scheint wie eine Menge Arbeit für den cache. Gibt es eine Möglichkeit, klar, nur ein Abschnitt der Cache.
//Something like:
$section_key = 'getrebates';
$Cache[$section_key][$operator_code];
$Cache->clearSection($section_key);
Ist es keine array-Struktur, um die APC-cache oder ist es alle cache-key/value based?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie anwenden tags auf Werte die im cache gespeichert. Dadurch können Sie einfach löschen Sie alle cache-Einträge, die einem bestimmten tag.
Finden Sie auf dieser Seite: http://framework.zend.com/manual/en/zend.cache.theory.html und die API für details über die clean-Methode Zend_Cache_Core: http://framework.zend.com/apidoc/1.11/
@theduke hat Recht, tagging ist der richtige Weg, es zu tun, außer für APC, als Zend_Cache_Backend_Apc nicht unterstützt tagging. Von der doc:
Und aus Ihrem letzten Kommentar, es sems Sie sind mit APC als backend. Also entweder Sie diese Klasse erweitern, und fügen Sie das Tag-Verhalten, indem Sie eine spezielle syntax in tag-Bezeichner? durch den Umgang mit dem vs tag-mapping-cache-Eintrag woanders?, in einer Langzeit-cache-Eintrag?), oder Sie entscheiden, eine andere cache-backend.