Static Multisite Generator
Több statikus weboldal egy forrásból
Python- és Jinja2-alapú generátor, amely egy forrásból több statikus weboldalt épít osztott Apache-tárhelyre, képoptimalizálással, generált SEO-fájlokkal és feltöltésbarát változáslistával.
- mintaoldal
- 3
- oldalsablon
- 9
- generált fájl oldalanként
- 4
- pytest teszt
- 28
- Cél
- Több, közös arculatú kis weboldal egy helyen, a teljesítmény- és SEO-munkát a build végezze, az FTP-feltöltés pedig csak a változásokat küldje.
- Megoldás
- Közös sablonok és assetek oldalankénti felülírással, domainenként Jinja2-vel renderelve. A build utófeldolgozza a HTML-ben a képeket, minden oldalhoz sitemapet, robots.txt-t, llms.txt-t és .htaccess-t generál, a változatlan fájlokhoz nem nyúl, és hash-alapú feltöltési listát ír. Minden front-end könyvtár és font saját tárhelyről jön.
- Eredmény
- Publikus, dokumentált generátor három kitalált mintaoldallal és tesztekkel. Változás nélküli második build után nincs mit feltölteni, a linkellenőrzés a külső linkekkel együtt hibátlan.
- Az oldalak közötti linkek a helyi előnézetben és élesben is működnek
- Képméret, betöltési prioritás és WebP srcset automatikusan, build közben
- A változatlan fájlok megőrzik a módosítási idejüket, így az FTP-kliens kihagyja őket
- Nincs harmadik féltől jövő kérés: a könyvtárak és fontok az oldal saját tárhelyéről jönnek
- HTML-autoescape és szigorú sablonváltozók
Működés
A build domainenként bemásolja a közös, majd az oldalspecifikus asseteket, rendereli az oldalakat, utófeldolgozza a képeket, ideiglenes mappába írja a meta-fájlokat, végül a kimenetbe szinkronizál, csak a változott fájlokhoz nyúlva. Egy SHA-256 manifest adja az előző build óta feltöltendő és törlendő fájlok listáját.
Tesztelés
A pytest tesztek ideiglenes forrásfán futnak, és lefedik az URL-képzést, az oldalak közötti linkeket, az assetverziókat és a felülírást, a képattribútumokat, a szinkront és a változáslistát, a generált fájlokat és a linkellenőrzőt.
Korlátok és továbbfejlesztés
A generált szerverkonfiguráció Apache-ra készül, és még nincs feltöltő script: a változáslista kézi vagy lftp-alapú feltöltéshez készül. Lehetséges következő lépés egy FTPS-feltöltő script és a hozzájárulás-alapú analitika.