Jak řešíte generování cache při/po deploy?

Namespace
Člen | 81
+
0
-

Ahoj, mohu se zeptat jak řešíte generování cache po deploy? Máme poměrně velkou aplikaci, kde generování cache trvá delší dobu. Bohužel k serveru je přístup jen pomocí ftp, tak i deploy běží přes něj.

V současnosti se složka s cache přejmenuje na cache_random_string a vytvoří se nová. A to nám aktuálně způsobuje problémy. Když se generuje cache, tak aplikace „zamrzne“ a čeká na doběhnutí.

Přesun na server s ssh zatím bohužel není možný. Tak kdybyste někdo měl nějaké ozkoušené řešení, tak bych byl vděčný. Deploy nám běží přes GitHub Action

Kamil Valenta
Člen | 820
+
+3
-

Obecně bych řekl, že první krok deploy procesu je odstavit index.php na nějaký maintenance.php, protože v průběhu nechceš ani requesty na nekonzistentní skripty.
Generování cache pak řeší nějaký „after hook“, pokud není aplikace schopná běžet bez již nagenerované cache, tak nezbývá, než maintenance uvolnit až po doběhnutí toho generování. V tuto chvíli asi nevymyslíš více.

My třeba máme dost „custom deploy“, kdy se vše vyloží bokem (produkce v tom čase jede na předchozí verzi), vyřeší se vše potřebné (cache, práva na FS…) a na poslední chvíli se produkce odstaví, překopíruje a zase obnoví. „Výpadek“ je pak jen v nižším řádu vteřin.

Namespace
Člen | 81
+
0
-

Díky za odpověď! Ona naprostá většina našich deployů je úprava latte šablon, tak tam právě ani odstavení index.php neřešíme. Core věci jdou do produkce mimo business time a tam už index vypínáme.

Každopádně děkuju! :)

DefenestrationPraha
Člen | 127
+
+1
-

V dockerovém modelu dělám to, že pro cache vytvořím speciální tmpfs v paměti:

tmpfs:
 – /var/www/html/temp/cache:uid=999,gid=999,size=1G

Tím se dost výrazně zrychlí přístup k ní. Zároveň na naskočení docker containeru s aplikací navážu další mikroaplikaci, jejímž jediným smyslem je vyvolat wget na čelní stránku, čímž se velká část cache vygeneruje.