Cachování na straně klienta
- dundee
- Člen | 23
Ahoj,
koukal jsem, že metoda $presenter->lastModified, kterou se doporučuje
používat v
https://forum.nette.org/…html-vystupu
byla označena jako deprecated, ale nenašel jsem adekvátní náhradu se
stejnou funcionalitou.
Jaké je teď doporučení pro nastavení cachování na straně klienta?
Má si člověk pokaždé zduplikovat její funcionalitu?
<?php
$this->getHttpResponse()->setExpiration($expire);
if (!$this->getHttpContext()->isModified($lastModified, $etag)) {
$this->terminate();
}
?>
- Tomáš Kolinger
- Člen | 136
Nevím jistě ale vypadá to, jak kdyby úmyslem bylo zbavení závislosti
Presenter
u na Nette\Http\Response
. Tudíž náhrada
má být to, že si injectneš Nette\Http\Response
a tam teprve
zavoláš setExpiration()
…
- dundee
- Člen | 23
Vzhledem k tomu, že metoda getHttpResponse v presenteru jako deprecated označena není, tak bych řekl, že tím to nebude.
Jako deprecated byla metoda označena v commitu a7b9dd952619787261735bfb296ee999827b8f1d, který zavádí HttpContext, takže se má asi místo toho používat tahle třída, ale ta neobsahuje celou funkcionalitu původní metody.
- Tomáš Kolinger
- Člen | 136
Máš pravdu, v masteru se http context injectne přes
injectPrimary()
. Takže getHttpContext()
(ani jiné)
nezmizí.
Každopádně HttpContext
se o to sám postarat nemůže,
jelikož neumí zabít response. Takže nakonec skončíš zase v
Presenteru
:). Jen si to očividně musíš udělat „ručně“,
což bude mnohem jasnější, jelikož název lastModified()
vůbec
neříká, co metoda doopravdy dělá.
Editoval Tomáš Kolinger (26. 2. 2013 12:08)