Cache::clean() nemaže len svoj namespace

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
kravčo
Člen | 721
+
0
-

Prišiel som na zaujímavú feature Nette keše:

<?php

use Nette\Caching\Cache,
    Nette\Caching\Storages\FileStorage;

$storage = new FileStorage(TEMP_DIR);
$cache1 = new Cache($storage, 'ns1');
$cache2 = new Cache($storage, 'ns2');

$cache1['key'] = 'Hello';
$cache2['key'] = 'World';

$cache1->clean(array(Cache::ALL => TRUE)); // all

$cache2->release();

Assert::same( 'World', $cache2['key'] ); // tůdle, je to NULL

Rovnako to všade zmaže rovnaký tag…

Je to takto v poriadku? Ak áno, prečo?

Editoval kravčo (2. 5. 2011 0:14)

Filip Procházka
Moderator | 4668
+
0
-

Ta metoda clean totiž operuje nad celým FileStorage. Teoreticky, pokud vytvoříš jiný storage (s vlastním journalem) tak se to tak chovat nebude.

Každopádně je to kapánek matoucí :)

kravčo
Člen | 721
+
0
-

Ten príklad mal zopár chybiek, doplnil som usy, ďalej Cache::ALL, bez ktorého by to samozrejme keš nezmazalo a $cache2->release(), bez ktorého by to zase nebol NULL

David Grudl
Nette Core | 8228
+
0
-

Problém je v tom, jak tohle vyřešit na úrovni úložišť, protože to musí být jednotné.