Kann das Google Maps-API-JavaScript zwischengespeichert werden?

8

Nur neugierig, ob das Google Maps API v3 Javascript auf dem lokalen Server zwischengespeichert wird?

Weil meine Intranetseiten wegen der langsameren Internetverbindung manchmal langsam geladen werden. Andernfalls würde es die Datei vom lokalen Server laden und nur verlangsamen, wenn die Kartenanforderung erfolgt.

Ich bin sogar bereit, einen Cron-Job auszuführen, um die Javascript-Datei hin und wieder zu aktualisieren.

Danke für jede Eingabe.

    
Nirmal 27.12.2009, 05:10
quelle

4 Antworten

13

Es ist unmöglich "wie es ist".

Wenn Sie das Skript von Google anfordern, senden sie Header entlang des Skripts, und diese Header enthalten die Direktive "no-cache".

Wenn Sie also möchten, dass sie zwischengespeichert werden können, müssen Sie einen Proxy erstellen. Anstatt das Skript src auf Google zu zeigen, weisen Sie es auf Ihren Server. Ihr Server macht dann den Anruf bei Google und sendet die Antwort zurück an den Client.

Auf diese Weise haben Sie die Kontrolle über den HTTP-Header und das Caching. Sie können auch den Skript-Inhalt zwischenspeichern, um weniger Verbindungen zu Google herzustellen.

Ich würde niemandem raten, dies auf einer produktions- oder unternehmenskritischen Website zu tun. Alle Google APIs werden häufig aktualisiert und sind mehr oder weniger miteinander verknüpft. Wenn etwas mit etwas anderem nicht in Einklang kommt, haben Sie einen schweren Fehler in Ihren Händen.

Ich hoffe, das hilft.

EDIT: Ich habe gehört, dass Sie Ihre Skripte in den Abschnitt HEAD Ihres Dokuments geschrieben haben. Vielleicht schadet das Ihrer "wahrgenommenen" Seitenladezeit. Versuchen Sie, den Download des Skripts unmittelbar vor dem </body> -Tag und der Karteninitialisierung im onload -Ereignis der Seite zu verschieben.

Mike

    
Mike Gleason jr Couturier 27.12.2009, 05:50
quelle
4

Ab 2016 wird die js mit dem Header "Cache-Control: public, max-age = 1800" zurückgegeben, sodass sie für mindestens eine halbe Stunde zwischengespeichert wird.

    
Andris 27.01.2016 00:13
quelle
3

IMHO Sie können es nicht zwischenspeichern. Das API-Skript ruft Objekte auf dem Google-Server auf. Sie können die Ergebnisse höchstens erfassen und als Bilder zwischenspeichern (aber dann verlieren Sie die Interaktivität).

Wenn es möglich wäre, GMap-Ergebnisse zu cachen, würden die Leute die gesamte Datenbank von Google nur lokal cachen und ich denke nicht, dass dies Teil der Benutzervereinbarung ist;).

Wenn Sie Offline-Karten möchten, müssen Sie mit nicht interaktiven Bildern arbeiten oder einen Kartenserver kaufen.

    
Traveling Tech Guy 27.12.2009 05:27
quelle
0

Eine Option, bei der Sie nicht gegen die Nutzungsbedingungen von Google verstoßen würden, wäre, einen lokalen Cache mit OpenStreetMap-Kacheln mit dem OpenLayers-Skript zum Anzeigen zu behalten. Im Grunde verwenden Sie freie Daten, um Ihren eigenen Kartenserver zu erstellen.

Wenn bestimmte Punkte von Interesse sind, die für Ihr Intranet wichtig sind, können Sie sicherstellen, dass sie sich in OpenStreetMap befinden und einen Rendering-Server selbst mit den von Ihnen benötigten Funktionen einrichten. Schließlich wird das Überlagern jeder Schule in einem Distrikt über einige PNGs mehr Arbeit erfordern als nur das Zeigen der PNGs mit den Schulen in ihnen.

Es würde auch viel weniger Verzögerung bei einer langsamen externen Verbindung benötigen, wenn Ihr Kartenserver die Kacheln während des Wochenendes erhält / generiert, anstatt die Google Map API die ganze Zeit zu treffen.

    
sargas 27.12.2009 11:14
quelle

Tags und Links