All checks were successful
Build & Publish Docker Image / build-and-push (push) Successful in 54s
Vorher: In-Memory-Map, TTL 30 Minuten. Container-Neustart verwarf den kompletten Cache, also musste nach jedem Deploy jede Suche wieder alle Seiten laden. Jetzt: - Neue Tabelle thumbnail_cache (url PK, image, expires_at) - Default-TTL 30 Tage, per Env KOCHWAS_THUMB_TTL_DAYS konfigurierbar (7, 365, was der User will — is alles ok laut Nutzer) - Negative Cache: Seiten ohne Bild werden mit image=NULL gespeichert, damit wir nicht jede Suche die gleiche kaputte Seite wieder laden - Lazy-Cleanup: pro searchWeb-Aufruf werden abgelaufene Zeilen via DELETE ... WHERE expires_at <= now() weggeräumt (Index-Scan, billig) Migration 003_thumbnail_cache.sql: nicht-destruktiv, nur neue Tabelle. Bestehende DB bekommt sie beim nächsten Start automatisch dazu. Tests (99/99): - Neuer Cache-Test: zweiter searchWeb für dieselbe URL macht keinen Page-Fetch mehr und liest die image-Spalte aus SQLite.
11 lines
480 B
SQL
11 lines
480 B
SQL
-- Long-term cache for page → image URL mappings extracted via og:image,
|
|
-- JSON-LD, or first content <img>. Fetching every recipe page on every
|
|
-- search is expensive; store the mapping with a 30-day default TTL.
|
|
CREATE TABLE thumbnail_cache (
|
|
url TEXT PRIMARY KEY,
|
|
image TEXT, -- NULL = page has no image (cache the negative too)
|
|
expires_at TEXT NOT NULL -- ISO-8601 UTC
|
|
);
|
|
|
|
CREATE INDEX idx_thumbnail_cache_expires ON thumbnail_cache(expires_at);
|