Så här cachar du OG-bilder
Att cacha OG-bilder innebär att en tidigare genererad social förhandsvisning (social preview) serveras från en CDN i stället för att renderas om vid varje delning. FastOG cachar identiska bilder i kanten (edge) i ett år – samma URL returnerar den cachade PNG-filen utan att räknas mot din kvot och med i princip noll latens, så att större delen av en webbplats OG-trafik aldrig når renderaren.
Varför cachning är viktigt
En delning i sociala medier utlöser en hämtning av plattformens crawler. Om varje delning renderades om skulle du förbruka kvot och latens på identiskt innehåll. Aggressiv cachning — nycklad på bildens innehåll — förvandlar "varje delning kostar 1 rendering" till "den första delningen kostar 1 rendering, varje annan delning är gratis."
Innehållsnyckelmodellen som får det att fungera
FastOG använder innehållssignerade URL:er: URL:en är en ren funktion av parametrarna. Identisk titel + mall → identisk URL. Det innebär:
- FastOG:s edge behåller bilden under URL:en.
- Samma innehåll delat 10 000 gånger → en rendering, en kvotförbrukning, 9 999 cacheträffar.
- Ändra innehållet → annan URL → en ny rendering.
GET /api/v1/og?title=Hello&template=default&key=...&s=... → render (1 quota count), then
GET /api/v1/og?title=Hello&template=default&key=...&s=... → cached (0 counts, instant)
GET /api/v1/og?title=Changed&template=default&key=...&s=... → render (1 quota count)
FastOG:s cache-rubriker
FastOG returnerar Cache-Control: public, max-age=31536000, immutable (ett år) för renderade bilder. En omslagsbild
serveras från FastOG:s edge i två nivåer: renderingscachen framför fastog.com, och en beständig
objektlagring bakom den. Upprepade hämtningar besvaras utan ny rendering, och X-FastOG-Worker-Cache i
svaret anger vilken nivå som svarade (HIT, R2, MISS).
Eftersom den beständiga kopian inte är beroende av renderaren, fortsätter omslagsbilder som hämtats minst en gång att serveras medan FastOG:s renderingstjänst är tillfälligt otillgänglig — ett avbrott gör inte att en förhandsvisning som redan genererats blir tom. En omslagsbild som aldrig renderats tidigare är det enda fallet som kräver renderaren, och där svarar FastOG med en bild i stället för ett fel:
| Situation | Vad en crawler får |
|---|---|
| Omslagsbild redan renderad | omslagsbilden, från edge eller den beständiga lagringen |
| Aldrig renderad, renderingstjänsten uppe | omslagsbilden, renderad på begäran |
| Aldrig renderad, renderingstjänsten tillfälligt nere | sidans egen bild som skickas i webbadressen (din produktbild), eller ett neutralt kort — aldrig en felsida |
Om själva begäran är ogiltig (en manipulerad signatur, en saknad title) får du fortfarande motsvarande 4xx-svar.
Ändra en bild som du redan har publicerat
| Du ändrade | Vad du ska göra |
|---|---|
| Innehållet (titel, pris, foto) | ingenting: innehållet finns i URL:en, så det nya innehållet är en ny URL och renderas färskt |
| Mallen eller en renderingsstandard | öka cache-bust-versionen (FASTOG_CACHE_BUST) så att varje URL får en ny v-parameter |
| Du behöver samma URL renderad på nytt | be supporten att rensa just den URL:en — exakt-URL-rensningen är inte exponerad som en publik slutpunkt |
Länkar som redan har delats fortsätter att fungera och fortsätter att visa den bild de lovade, om du inte rensar just den URL:en.
Cachelagra din egen og:image (self-hosted)
Om du lagrar bilder själv istället för att använda FastOG:s cache, tillämpa samma regler:
| Steg | Detalj |
|---|---|
| Cache-nyckel = innehållshash | Lagra baserat på en hash av datan, inte ett föränderligt filnamn |
| Lång TTL | max-age=31536000, immutable för stabilt innehåll |
| Versionshanterade URL:er | Lägg till en hash/version när innehållet ändras |
| CDN framför | Låt CDN:t absorbera upprepade hämtningar |
FAQ
Kostar upprepade delningar verkligen 0 renderingar?
Ja. Identiska webbadresser träffar edge-cachen och når aldrig renderaren — ingen kvot förbrukas.
Hur länge cachar FastOG en bild?
Ett år (immutable). Långt efter första renderingen serveras ett delat kort från cachen.
Vad händer om jag vill att en bild ska uppdateras (t.ex. livepris)?
Ändra en parameter (priset) → ny webbadress → ny rendering. Stabilt innehåll förblir cachat; dynamiskt innehåll uppdateras när du vill.