Proč FileStorage ukládá <?php //netteCache …?>?

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

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
+
0
-

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
+
0
-

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)

hrach
Člen | 1838
+
0
-

No, sam sis odpovedel. V prvnim prispevku mluvis o cachi, ale v druhem o storage. Napis si kliden vlastni storage pro css a neni problem.

jtousek
Člen | 951
+
0
-

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. :-/

hrach
Člen | 1838
+
0
-

No hlavne jak llook, delas to spatne.

jtousek
Člen | 951
+
0
-

@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)