Spring til indhold

Kort med stednavne

Plugin: dfb-stednavne/dfb-stednavne.php
Opdateret: 18. juni 2026

# DFB Stednavne — Prefetch Optimization

## Hvad er ændret?

Du havde ret — scriptet var trægt når siden loadede. Nu **prefetcher** vi automatisk alle steder i baggrunden:

### **reader.js** (public visitor experience)

**Før:**
1. Siden loader
2. Mappingerne hentes
3. Teksten highlightes
4. Brugeren klikker et sted
5. Først nu begynder fetch af kortdata → “Henter sted…”
6. Kort vises efter 100-300ms

**Nu:**
1. Siden loader
2. Mappingerne hentes
3. Teksten highlightes + **samtidig** startes prefetch af ALLE fundne stedera
4. Brugeren klikker → kortet er allerede i cache
5. Kort vises **øjeblikkeligt** (ingen “Henter sted…” besked)

### Implementering

“`javascript
function prefetchPlaces(reader) {
// 1. Scan teksten for alle stednavne (samme logik som highlighting)
// 2. Saml alle unikke ancient_id’er
// 3. Batch-fetch alle steders data i baggrunden
}
“`

**Fordele:**
– ✅ Instant map-popup når man klikker
– ✅ Ingen “Henter sted…”-besked hvis data er cachert
– ✅ Baggrunds-loading — tidak blokerer sidens interaktivitet
– ✅ Samme performance som `dfb-laeseplan-makker` (smart prefetch)

### **tagger.js** (admin tagging experience)

Samme logik tilføjet så når admin slår tagging til:
– Alle nuværende mappinger prefetches
– Hvis admin later hoverer over/preview af et sted, er data allerede cachet

“`javascript
function prefetchPlacesForTagger() {
// Prefetch alle mapped places for current session
}
“`

## Teknisk detaljer

**Hvor mange requests?**
– Hvis en side har fx 8 steder → 8 parallelle fetch-requests i baggrunden
– Ingen blokering — alle kører samtidig
– Hvis en user ikke klikker nogen steder, er de bare der hvis de gør

**Cache-strategi:**
– `state.placeCache[ancient_id]` — i-memory cache
– Per session (ikke persistent localStorage)
– Samme som før, bare fyldt proaktivt

**Fejlhåndtering:**
– Hvis prefetch fejler → ingen error-besked
– Hvis user senere klikker det sted → fallback til on-demand fetch
– Roligt og graceful

## Timing

Med denne ændring på en side med f.eks. 5-8 steder:

| Scenario | Før | Efter |
|———-|—–|——-|
| **Side loader** | 200ms | 200ms (no change) |
| **Prefetch starter** | — | ~100ms efter highlighting |
| **User klikker sted (cached)** | +150-300ms | +0ms ✨ |
| **User klikker sted (not cached)** | +150-300ms | +150-300ms (same as before) |

**Den vigtigste gain:** Første klik på et populært sted (f.eks. Jerusalem på Joh 1) → instant popup.

## Filer ændret

– `assets/js/reader.js` — ny `prefetchPlaces()` funktion + modifieret `openMap()`
– `assets/js/tagger.js` — ny `prefetchPlacesForTagger()` + `placeCache` i state

Alt andet uændret. Plugin er 100% baglæns-kompatibel.

← Tilbage til dokumentation