Čas mezi rozhodnutím a tím, než to web řekne
Publikace příspěvku dřív stála tolik, kolik měří archiv, ne kolik měří změna. Příspěvek datovaný dneškem změní tucet souborů. Sestavení vykreslilo každou stránku v archivu a každou přečetlo zpět z disku, aby to zjistilo.
Na archivu, kolem kterého tento engine vznikl – 6 639 příspěvků, na serveru, kde bydlí – to bylo 47 vteřin za nové sestavení, které nezměnilo nic, a 48 od stisku publikovat do chvíle, kdy byl příspěvek venku. V pořádku pro jeden příspěvek ráno. Méně v pořádku pro opravu překlepu v deseti z nich.
Co si sestavení teď pamatuje
1.6 si vede záznam o tom, co vstoupilo do každé stránky: příspěvek, šablona, lokalizace, konfigurace, engine sám. Při dalším sestavení vykreslí jen stránky, jejichž záznam už nesedí, a zbytek stojí jeden stat každá místo plného vykreslení a čtení zpět.
Týž archiv, měřený stejně: nové sestavení, které nemění nic, trvá sedminu toho, co dřív. Publikace příspěvku datovaného dneškem trvá asi dvě pětiny – 16 vteřin sestavení a 2 nahrání, kde bylo 48 – a sestavení to říká samo: Stránek beze změny, nepřestavěny: 10 160. Poměr je to, co cestuje; vteřiny jsou jednoho stroje.
Co pořád nemůže přeskočit
Příspěvek datovaný do začátku tisíciletí stojí čtyři pětiny plného sestavení a nijak se tomu nedá vyhnout. Příspěvek, který tam dopadne, posune každou stránku výpisu mezi titulní stranou a místem, kam dopadne, a ty stránky se opravdu změnily. Cache přeskočí to, co se nezměnilo; nemůže přeskočit to, co ano. Import archivu je zpětné datování několik tisíckrát za sebou, takže import je plné sestavení, jako byl vždy – což je také důvod, proč má import dopadnout najednou, ne příspěvek po příspěvku.
Úprava šablony, lokalizace nebo site.yml zahodí celý záznam, protože kterákoli z nich může změnit každou stránku. Totéž udělá změna časového pásma, včetně té, kterou udělá aktualizace systému, aniž se čehokoli dotkneš. Stylesheet je výjimka, kterou stojí za to znát: stránky na něj odkazují, nevkládají ho, takže jeho úprava mění stylesheet a nic jiného – sestavení po ní vykreslí stránky ještě jednou a nenajde k nahrání nic nového kromě toho jednoho souboru.
Poznámka, ne autorita
Záznam je optimalizace a nikdy ne pravda o webu. Cokoli, za co se nemůže zaručit, se sestaví postaru: záznam, který chybí, je useknutý, v jiném formátu, nebo ho nechalo sestavení, které uprostřed zhavarovalo. Stránka, kterou někdo v public.nosync/ ručně smazal nebo poškodil, se při dalším sestavení vrátí, protože záznam se kontroluje proti tomu, co na disku skutečně je. A public.nosync/ se pořád uklízí od všeho, co sestavení nevytváří, cache necache.
Žije v .build_cache.json v instalačním adresáři – v gitignore, jeden na stroj, vždy bezpečné ho smazat. Smazání stojí jedno pomalé sestavení a nic jiného, což je celý smysl držení archivu jako souborů: poznámka o souborech je jen další soubor.
./blog.sh rebuild --full # sestavit každou stránku znovu, pak nasadit
Nic k migraci. První sestavení po git pull je plné a záznam zapíše; každé další ho čte.

Komentáře