Wyzwanie
Open Circle utrzymuje Valibot i Formisch, dwie biblioteki używane w ekosystemie TypeScript. Ich dokumentacje, valibot.dev i formisch.com, działały na Vercel Pro w ramach Vercel OSS Program. Gdy wsparcie programu się skończyło, rachunek za Pro miał trafić do osób utrzymujących projekty. Strony miały zachować tę samą publiczną dokumentację, ale bez stałego kosztu infrastruktury.
Dlaczego statyczna wersja miała sens
To były strony dokumentacji, nie aplikacje wymagające renderowania przy każdym żądaniu. Qwik SSG pozwalał pregenerować trasy, zachować nawigację po stronie klienta przez q-data.json i przenieść preferencje, takie jak motyw, rozdziały i wybór frameworka, do localStorage. Dzięki temu doświadczenie użytkownika zostało takie samo, a Edge SSR, funkcje runtime i potrzeba planu Pro zniknęły.
Co wdrożyliśmy
-
Zastąpiliśmy adaptery Edge i Cloudflare adapterem SSG z @qwik.dev/router.
-
Generujemy statyczny HTML w dist oraz pliki q-data.json dla każdej trasy.
-
Przenieśliśmy motyw, rozdziały i wybór frameworka z cookies do providerów Qwik opartych o localStorage i signals.
-
Zastąpiliśmy akcje serwerowe sygnałami po stronie klienta dla menu, sidebarów i FAQ.
-
Pregenerujemy PNG dla OG podczas kompilacji z @vercel/og i sharp, bez dynamicznych tras /og.
-
Przenieśliśmy przekierowania i nagłówki cache do vercel.json dla statycznego serwowania.
-
Spatchowaliśmy obsługę trailing slash w Qwik SSG dla ścieżek z kropkami, np. plików .md i .png.
Efekt
Formisch i Valibot wdrażają się teraz jako statyczne strony Qwik na Vercel Hobby. Każda ma około 240 pregenerowanych stron, obrazy OG są serwowane z CDN, a funkcji runtime jest zero. Miesięczny rachunek za hosting wynosi 0 zł, a użytkownicy szybciej widzą pierwszą treść, bo przeglądarka dostaje statyczny HTML zamiast czekać na renderowanie przy żądaniu.
Część naszego OSS Partner Program
To pierwsze wdrożenie w ramach naszego OSS Partner Program, który nadal budujemy. Założenie jest proste: pomagamy zespołom open source usuwać stałe koszty infrastruktury i utrzymania, żeby finansowanie wracało do bibliotek, na których polegają inni.
