Skip to content

Latest commit

 

History

History
154 lines (119 loc) · 6.14 KB

proxy_cache.md

File metadata and controls

154 lines (119 loc) · 6.14 KB

Hauptmenü

Karten-Proxy und -Cache

Inhalte

In einer Redaxo-Instanz fungiert Geolocation als Abruf-Proxy-Srver für Kartenausschnitte vom Server des Anbieters mit gleichzeitiger Möglichkeit, die abgerufenen Kartenausschnitte (Kacheln) zwischenzuspeichern (Cache).

Übersicht

Die Leaflet-Karten bestehen aus Kartenkacheln (Tiles), die von einem entsprechenden Server bereitgestellt werden. Anbieter sind z.B. OpenStreetMap, Google, Apple oder Here. Details zum Erfassen und Verwalten sind in der Anleitung zur Verwaltung der Karten zu finden.

In der REDAXO-Instanz fungiert Geolocation als

  • Proxy-Server:

    • Abruf von Kartenkacheln eines Anbieters indirekt über den Server der REDAXO-Instanz
  • Cache-Server:

    • Zwischenspeichern von Kartenkacheln im Cache-Verzeichnis der REDAXO-Instanz
    • Cache-Verwaltung per Cron-Job

Zur Nutzung der Proxy/Cache-Funktionalität ist es lediglich notwendig, in der Kartenverwaltung der Webseite die gewünschten URLs zu konfigurieren. Das Geolocation-Javascript erzeugt die Karten per LeafletJS und nutzt immer den hier beschriebenen ProxyCache.

Der Proxy kann auch mit Karten eingesetzt werden, die mit anderer Software (z.B. OpenLayers) erzeugt werden; allerdings muss die URL dann entsprechend im JS angegeben werden. Geolocation sollte dazu als "nur Proxy" installiert werden.

Es ist nicht notwendig, das zu Geolocation gehörende Javascript zu laden, um die Proxy-Funktionalität zu nutzen. In der Installationsbeschreibung ist beschrieben, wie Geolocation Proxy-optimiert installiert werden kann.

Abruf-URL für Kartenkacheln

Die Kartenkacheln können mit einer standardisierten URL vom Server der REDAXO-Instanz abgerufen werden. Die URL unterscheiden sich nur über die Datensatznummer, unter der die Karten-URL in der Karten-Verwaltung erfasst wurde.

index.php?geolayer=«id»&x={x}&y={y}&z={z}&r={r}

oder

?geolayer=«id»&x={x}&y={y}&z={z}&r={r}

Erkennt die boot.php von Geolocation den URL-Parameter geolayer wird versucht, die entsprechende Kartenkachel mit der Koordinate {x}/{y} und Zoom-Faktor {z} an den Client auszuliefern.

Statt geolayer kann — z.B. um Namenskonflikte zu umgehen — ein individueller Parameter-Name über die Systemparameter gesetzt werden.

Das weitere Vorgehen unterscheidet sich abhängig davon, ob Kacheln im Cache gehalten werden oder nicht.

Der Proxy-Server

Die REDAXO-Instanz fungiert als Proxy-Server zwischen dem Client und dem Server des Kartenanbieters.

  1. Wenn die «id» nicht in der Karten-Tabelle gefunden wird, sendet der Server 404 Not Found.
  2. Wenn der Karten-Datensatz auf "offline" gesetzt ist, sendet der Server 404 Not Found.
  3. Aus der URL werden die Parameter x, y und z extrahiert.
  4. Mit den Parametern sowie dem zufällig ausgewählten Sub-Domänen-Kürzel wird die Anbieter-URL befüllt.
  5. Beim Karten-Server wird die Kartenkachel abgerufen.
  6. Die Rückgabe vom Tile-Server wird bearbeitet:
    • Fehler: schicke Fehlercode und Fehlermeldung an den Client
    • Erfolg: schicke die Kachel an den Client.

Caching

Das Verfahren mit Caching erweitert die Proxy-Abfrage um die Speicherung der Kacheln in einem Cache-Verzeichnis . Für jeden Kartentyp wird ein separates Verzeichnis geführt, dessen Name wiederum die «id» ist.

/redaxo/cache/addons/geolocation/«id»

Voraussetzung ist, dass in der Konfiguration für den Kartentyp «id» die 'Aufbewahrungsdauer im Cache (TTL)' auf mehr als 0 Minuten eingestellt ist.

  1. Wenn die «id» nicht in der Karten-Tabelle gefunden wird, sendet der Server 404 Not Found.
  2. Wenn der Karten-Datensatz auf "offline" gesetzt ist, sendet der Server 404 Not Found.
  3. Aus der URL werden die Parameter x, y und z extrahiert.
  4. Aus den Parametern wird der Cache-Dateiname erzeugt.
  5. Die Cache-Datei wird abgerufen
    • Wenn gefunden und nicht abgelaufen (TTL überschritten): schicke die Datei aus dem Cache an den Client. Fertig.
    • sonst: Cache-Datei löschen und weiter mit 6.
  6. Mit den Parametern sowie dem zufällig ausgewählten Sub-Domänen-Kürzel wird die Anbieter-URL befüllt.
  7. Beim Karten-Server wird die Kartenkachel abgerufen.
  8. Die Rückgabe vom Tile-Server wird bearbeitet:
    • Fehler: schicke Fehlercode und Fehlermeldung an den Client
    • Erfolg: speichere die Kachel im Cache und sende sie an den Client.

Cache-Cronjob

Der Cache wird regelmäßig bereinigt. Dazu startet ein Cronjob Geolocation: Cleanup Cache regelmäßig und führt diese Arbeitsschritte aus:

  1. Lösche alle Dateien, deren Aufbewahrungsdauer (TTL) abgelaufen ist.
  2. Wenn danach mehr als die zulässige Höchstanzahl Dateien verbleibt, wird die Aufbewahrungsdauer halbiert und Schritt 1 erneut durchgeführt.

Die Schritte werden so oft wiederholt, bis die maximale Anzahl Dateien unterschritten ist.

Der Cronjob wird automatisch mit folgenden Parametern installiert:

  • Einmal am Tag (05:30 Uhr)
  • Backend/Frontend
  • Scriptanfang
  • aktiviert

Cronjob-Konfiguration

Umkonfigurieren des Cronjobs ist möglich; die Daten werden beim Re-Installieren nicht überschrieben. Wurde der Cronjob umbenannt oder gelöscht, wird beim Re-Installieren der Cronjob Geolocation: Cleanup Cache neu angelegt.

Die bei der Installation benutzen Job-Parameter können mit Instanz-individuellen Systemparametern überschrieben werden.