Pomoc s cachovanim funkce

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

Prosim o pomoc s pouzitim cache:

v template nacitam v cyklu takove male grafy:

template:

...
{?$mdata = [$sloupec1->500, $sloupec2->1000]} //data pro graf
{?$ident = $iterator->getCounter()} // identifikator pro cache ?!
<img src="{plink Graph:detailGraph, $mdata, $ident}" class="graph">
...

pak mam presenter GraphPresenter:

function actionDetailGraph($mdata, $ident) {

	$storage = $this->context->cacheStorage;
	$cache = new Nette\Caching\Cache($storage, $ident);
	$image = $cache->call(callback(__CLASS__, 'generateDetailGraph'), $mdata);
	return $image;

    }

    static function generateDetailGraph($mdata) {

	$new = new \Graph\graph('3dcolumn', 100, 100, '#fffeff', '8x13iso.gdf');
	$new->enable_aliasing();
	$new->set_values($mdata, 0, 'gold');
	$new->paint_lines('#000000', 'lines', 'lines');
	$new->padding_bottom = 1;
	$new->padding_left = 1;
	$new->padding_right = 1;
	$new->padding_top = 1;
	$new->plot();
 }

plot() vraci pak obrazek.
Onehda jsem tady neco podobneho zahledl, ale nebylo to doresene…

Toto me chybu nehlasi, ale nefunguje. Generuju cca 10 grafu za sebou a trva to desne dlouho.. proto potrebuji cachovat jakoby vysledek funkce DetailGraph.

V adresari cache nevidim nic, jen cely template. Pokud dam cely template do {cache}.

Delam neco spatne?

Diky !

nanuqcz
Člen | 822
+
0
-

Ahoj, pro cachování generovaných obrázků bych hledal inspiraci tady ;-) Jde o to, že si celý vygenerovaný obrázek uložíš jako soubor (třeba s příponou .png) a pak jen vracíš cestu k němu. Nový obrázek generuješ jen tehdy, pokud jeho soubor chybí. Náze souboru může být třeba nějaký hash vstupních dat, nebo tak něco.

MW
Člen | 626
+
0
-

Díky, to bude to, co hledam…