Template warmup cache cez cli
- miskovicm
- Člen | 3
Ahojte,
potreboval by som sa poradiť ako máte naimplementovaný warmup pre latte
šablóny.
Používam Latte\Engine::warmupCache
, čo funguje korektne, až na
cache key.
v CLI nie sú namapované presenter funkcie isLinkCurrent
&
isModuleCurrent
, ktoré sa používajú na generovanie cache key.
Čiže takto skompilované šablóny sa nikdy nepoužijú.
Ak ten istý script spustím cez presenter a HTTP volanie, tak to zafunguje, ale zdá sa, že iba ak mám vypnutý debug mode.
public function actionWarmup(): void {
$latte = $this->template->getLatte();
foreach (\Nette\Utils\Finder::findFiles('*.latte')->from(...) as $file) {
$latte->warmupCache($file->getRealPath());
}
$this->terminate();
}
Prinajmenšom ma len nasmerujte, či to riešim správnym spôsobom.
Ďakujem krásne.
- uestla
- Backer | 799
Ahoj, to bude tím, že v CLI neexistuje HTTP request – viz https://phpfashion.com/…lech-a-nette.
Možná se zkus podívat na https://github.com/…onsole-extra, který command pro warmup obsahuje + má závislost na https://github.com/…utte/console, ve které si můžeš nakonfigurovat URL pro umělý HTTP request právě v rámci CLI commandu.
- miskovicm
- Člen | 3
Dopracoval som sa k nasledovnej úprave Latte\Engine
Ak odstránim presenter metódy, tak to funguje aj cez CLI.
protected function getCacheKey(): array
{
$funcs = $this->getFunctions();
unset($funcs['isLinkCurrent'], $funcs['isModuleCurrent']);
return [
$this->contentType,
array_keys($funcs),
array_map(
fn($extension) => [
get_debug_type($extension),
$extension->getCacheKey($this),
filemtime((new \ReflectionObject($extension))->getFileName()),
],
$this->extensions,
),
];
}
Z toho mi vychádza, že k tomu pristupujem inak, ako bolo zamýšľané
alebo generovanie kľúča s tým nepočíta.
Príde mi kontraproduktívne umelo vyrábať v CLI presenter (ak sa to vôbec
dá), aby som ho mohol posunúť do TemplateFactory
.
Editoval miskovicm (7. 10. 22:40)
- miskovicm
- Člen | 3
uestla napsal(a):
Ahoj, to bude tím, že v CLI neexistuje HTTP request – viz https://phpfashion.com/…lech-a-nette.
Možná se zkus podívat na https://github.com/…onsole-extra, který command pro warmup obsahuje + má závislost na https://github.com/…utte/console, ve které si můžeš nakonfigurovat URL pro umělý HTTP request právě v rámci CLI commandu.
Konecne som mal chvilu cas, tak som si spravil novy projekt
nette/application
+ contributte/console-extra
a
nefunguje to rovnako ako som popisal. Aktualne to asi nie je mozne, kedze web a
cli pouzivaju odlisnu konfiguraciu.