2009-12-27 8 views
7

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

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

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

Danke für jede Eingabe.

Antwort

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 führt dann den Anruf bei Google durch und sendet die Antwort an den Client zurück.

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

Ich würde niemandem raten, es auf einer Produktion oder einer missionskritischen 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.

Hoffe, dass hilft.

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

Mike

+0

Vielen Dank für die Erklärung Es stimmt, dass Google die API fast jede Woche aktualisiert. Ich dachte nicht in dieser Perspektive. – Nirmal

+4

Gern geschehen .. die v3-API ist kompakter und schneller als die v2, also würde ich mir keine Sorgen machen. Stattdessen sollten Sie schauen wie du deine Sachen initialisierst, wie ich schon sagte, siehe http://developer.yahoo.com/performance/rules.html, insbesondere die "Put Scripts im unteren Bereich". –

+0

+1 für die Hilfe hinzugefügt. Dieser Link von Yahoo ist wirklich nützlich. Ich habe nicht viel von Leistungsproblemen gehalten, da die Seiten ausschließlich im Intranet sind. Aber jetzt denke ich, ich sollte die Best Practices ernsthaft in Betracht ziehen, denn unsere Organisation ist auf dem besten Wege, sich auf mehrere geografische Standorte auszudehnen. Ohne Feinabstimmung wäre ich wirklich in Schwierigkeiten. Danke noch einmal. – Nirmal

3

IMHO können Sie 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 Leute einfach die gesamte DB von Google lokal zwischenspeichern und ich glaube 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.

+0

Kartenserver! Ich würde einen lieben, aber nicht unsere Finanzabteilung :(Ich schaue nicht, um die Ergebnisse zu cachen. Die Gmap Javascript-Funktionen, die in den ''-Bereich geladen werden, nimmt die ganze Zeit. Wenn ich die abgerufene .js-Datei zwischenspeichern könnte Ich kann es aber vom lokalen Server aus aufrufen. Aber die Geocodierungs- oder Kartenanfragen können direkt von Google gestellt werden. Alles, was ich sehe, ist, ob es irgendeinen Einfluss darauf geben würde. – Nirmal

0

Eine Option, die Sie nicht haben würde Google die Servicebedingungen verstoßen würde einen lokalen Cache von OpenStreetMap Fliesen zu halten mit dem Openlayers Skript für sie sehen. 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 in OpenStreetMap sind und einen Rendering-Server selbst mit den von Ihnen benötigten Funktionen einrichten. Schließlich wird die Überlagerung jeder Schule in einem Distrikt über einige PNGs mehr Arbeit erfordern, als nur die PNGs zu zeigen, die mit den Schulen in ihnen gemacht wurden.

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.

4

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

Verwandte Themen