Cachování náhledů obrázků

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

V podstatě navazuji na tohle téma protože tento problém právě řeším.

Davig Grudl napsal:

Jednoznačně jsem pro líné generování a celý mechanismus spadá pod označení cache.

Důvod, proč jsem psal, že bych na to Nette\Caching nepoužil, je čistě výkonnostní. Obrázky je totiž nejlépe umístit do nějaké složky v document_root a nechat jejich stahování čistě v režii Apache. Bez PHP, bez frameworku. A nastavit nějaké pravidlo v .htaccess, které volá generátor, pokud obrázek neexistuje.

V tom generátoru samozřejmě je možné použít Nette, ale musel by se vytvořit nový ICacheStorage, který soubory cache ukládal bez metadat (tedy aby to byl čistě jen obrázek) – aby je poté už mohl číst Apache.

Teď si říkám, že napsat takový storage by možná bylo rychlejší než napsat tento post ;-)

Zatím jsem kešování v Nette nikdy nepotřeboval, takže se příliš neoreientuji v tom, jak to funguje. Ale když už bych se takovýto ICacheStorage rozhodl napsat, jak do toho zaimplementovat závislosti (jako EXPIRE, TAGS, …)? Nebo doporučujete v tomhle případě Nette\Cache raději vůbec nepoužít?

dakota
Člen | 148
+
0
-

Generovanie náhľadov obrázkov riešim až keď je náhľad potrebný – ako už bolo spomínané na https://forum.nette.org/…ledy-obrazku.

V htaccess mam:

RewriteCond %{REQUEST_URI} ^/previews/([^.]+)\.(jpg|png|gif)$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*) /images/preview?file=%1.%2 [NE,L]

Ak náhľad neexistuje zavola sa generator a v ňom náhľad vytváram len pomocou Nette\Image.

....
$image->send($type);
$image->save($previewFile, NULL, $type);

Samotný obrázok a vytvorené náhľady sa odstraňujú pri zmazaní obrázka uživateľom, Nette\Cache pritom nepoužívam (viem aky je pôvodný obrázok a aké sú k nemu náhľady).

Pri generovaní ešte rozlišujem veľkosť náhľadov a kontrolujem či je povolená, aby sa nevytvárali zbytočne nepotrebné náhľady – používam označenie napr. 1253_300×400.jpg – kde je veľkosť 300 × 400 px.

Problem možno vidim len v zaťažení servera napr. ak by sa naraz vytvaralo väčšie množstvo ešte neexistujúcich nahľadov (napr. niekto by si napisal skript kde by umiestnil všetke náhľady) – nemám to nijako ošetrené, zatiaľ som nenašiel vhodný spôsob.

Editoval dakota (10. 11. 2010 10:02)