Autor Zpráva
Str4wberry
Profil
Jelikož se stránky s Nette načítají pomalu, nabízí se použít keš.

To funguje hezky a jednoduše (stačí obalit layout šablony do {cache}) a výsledné HTML jednotlivých stránek se automaticky ukládá do jednotlivých souborů.

A tak si říkám, proč při požadavku na (už kešovanou) stránku zbytečně zdržovat načítání zapínáním Nette, když by stačilo akorát vysypat soubor z keše. Nějak takto:

if (file_exists("cache/pozadovana-url") {
  // vypsání z keše
}
else {
  // načtení Nette a běžné zpracování požadavku + vytvoření keše
}

Ale jak se dopátrat k tomu souboru; jeho název je totiž nejspíš nějaký hash… Existuje nějaké elegantní řešení? Jak byste to řešili vy?
DJ Miky
Profil
Mělo by stačit explicitně specifikovat nějaký název kešovaného bloku pomocí {cache $key}: http://doc.nette.org/cs/caching#toc-cachovani-v-sablonach
Klíč pak bude jeho MD5 hash (případně MD5 hash ze serialize(), pokud to není skalár): https://github.com/nette/nette/blob/master/Nette/Caching/Cache.php#L282
A název souboru bude mít podtržítko na začátku: https://github.com/nette/nette/blob/master/Nette/Caching/Storages/FileStorage.php#L389

Jestli je to dobrý nápad nebo ne, to nedokážu posoudit.
Str4wberry
Profil
Děkuji za radu. Bohužel to vypadá, že to takto nepůjde. Ten soubor má při každém vytvoření cache (po smazání veškeré cache) jiný název, takže to asi „_md5(název)“ nebude.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0