Proč FileStorage ukládá <?php //netteCache …?>?
- jtousek
- Člen | 951
Chtěl bych použít cache pro ukládání javascriptu, css a třeba i miniatur obrázků. JS kvůli minifikaci, CSS kvůli preprocesorům.
Myslel jsem že jednoduše použiju FileStorage, jenže ten si do svých souborů z nějakých důvodů ukládá serializované meta informace. Má to nějaký důvod nebo je to čistě kvůli lazení?
Potřeboval bych aby potomek FileStorage mohl např. změnit to „<?php“ a „?>“ na něco jiného pokud to ukládámí metainformací je z nějakého důvodu nutné anebo možnost to úplně vypnout pokud to nutné není.
- llook
- Člen | 407
Tyhle informace potřebuje storage při každém přístupu k těm datům, aby ověřil, jestli jsou ještě platná. Viz expirace & invalidace. Nepředpokládá se přímý přístup k souborům – když potřebuješ něco z cache, máš o to požádat storage.
Ty chceš ta data ukládat tak, aby se k nim dalo přistupovat přímo, tj. bez validace. Na to se Nette\Caching asi moc nehodí, zkus se spíš inspirovat Webloaderem.
- jtousek
- Člen | 951
Jestli se nemýlím tak FileTemplate k těm souborům taky přistupuje přímo. PhpFileStorage přímo vrací název souboru místo aby přečetl a vrátil jeho obsah.
Přestože se k souborům přistupuje přímo, stále jde v principu o cache. Nevidím důvod používat něco jiného. Zde na fóru už se o nějakém takovém storage i dříve mluvilo, jen to stále nikdo nepoužil.
Editoval jtousek (21. 6. 2012 22:08)
- jtousek
- Člen | 951
O storage mluvím už v prvním příspěvku. To vlastní css storage by v podstatě kopírovalo FileStorage s tím že místo „<?php //“ by použilo „/*“ etc. To se mi nelíbí – duplicitní kód.
Druhá věc je, že když bych to chtěl použít pro obrázky tak už vůbec nevím kam s těma meta informacema. Do separátního souboru?
Když nad tím tak přemýšlím, ukládání těch metadat přímo v souboru, který se bude servírovat ven, je potenciální bezpečnostní díra takže to asi budu muset ukládat jinam… Nějak se mi to komplikuje. :-/
- jtousek
- Člen | 951
@llook: Přestup webloaderu se mi oproti cachi z nelíbí z toho důvodu, že (afaik) sám od sebe neinvaliduje a nesmaže staré nepotřebné soubory. U CSS a JS budiž, tam tolik souborů není, ale v případě obrázků je to neúnosné. Hledat a mazat vygenerované miniatury při mazání obrázku se mi též moc nechce, nehledě na to že invalidovat nějakou množinu miniatur může např. změna vodoznaku. (Ale není žádoucí smazat všechny miniatury protože některé jsou záměrně bez vodoznaku. Tagy v Cache tohle řeší skvěle.)
Editoval jtousek (22. 6. 2012 16:48)