Domanda

Solo per curiosità, se l'API di Google Maps v3 javascript essere memorizzato nella cache sul server locale?

Perché, a volte le mie pagine intranet sta caricando lento a causa della connessione Internet più lenta. In caso contrario, sarebbe caricare il file dal server locale e rallentare solo quando la richiesta di carta è fatto.

Sono anche pronto a eseguire un job cron per aggiornare il file javascript una volta ogni tanto.

Grazie per ogni ingresso.

È stato utile?

Soluzione

E 'impossibile "così com'è".

Quando si richiede lo script da parte di Google, mandano intestazioni lungo la sceneggiatura e queste intestazioni contiene la direttiva "no-cache".

Quindi, se si desidera che siano cachable, è necessario creare un proxy. Invece di puntare lo src sceneggiatura a Google, si punta sul vostro server. Il server quindi effettuare la chiamata a Google e inviare la risposta al client.

In questo modo avrete il controllo su l'header HTTP e il caching. Si potrebbe fare il caching sul contenuto dello script, nonché per rendere meno connessioni a Google.

Non consiglierei a qualcuno di farlo su una produzione o un sito web mission critical. Tutte le API di Google vengono aggiornati di frequente e sono legati più o meno insieme. Se qualcosa va fuori sincrono con qualcos'altro, si dispone di un disco per tenere traccia bug sulle mani.

La speranza che aiuta.

EDIT: Ho sentito che stavano mettendo i vostri script nella sezione HEAD del documento. Forse questo è male il tempo di caricamento della pagina "percepita". Provare a spostare il download dello script appena prima del tag </body> e la mappa di inizializzazione in caso onload della pagina.

Mike

Altri suggerimenti

A partire dal 2016, i js viene restituito con "Cache-Control: pubblico, max-age = 1800". Intestazione, in modo che viene memorizzato nella cache per almeno per una mezz'ora

IMHO non è possibile memorizzare nella cache di esso. Lo script chiamate API oggetti sul server di Google. Al massimo, è possibile catturare i risultati e li cache come immagini (ma poi si perde l'interattività).

Se fosse possibile memorizzare nella cache i risultati GMAP, la gente sarebbe solo memorizzare nella cache intera DB di Google a livello locale e non credo che questo fa parte del contratto con l'utente;).

Se si desidera mappe offline, dovrete a che fare con le immagini non interattivi, o di acquistare un server mappa.

Un'opzione che non ti avrebbe violazione di Google Termini di servizio sarebbe quello di mantenere una cache locale di piastrelle di OpenStreetMap con lo script OpenLayers per loro visualizzazione. In sostanza, utilizzando i dati liberi di creare il proprio server mappa.

Se non ci sono particolari punti di interesse che sono importanti per la rete Intranet, è possibile assicurarsi che essi sono in OpenStreetMap e la configurazione di un server di rendering da soli con solo le caratteristiche desiderate. Dopo tutto, sovrapponendo ogni scuola in un quartiere su alcuni png di sta andando a prendere più lavoro allora solo mostrando il png del fatto con le scuole di loro.

E 'anche sarebbe voluto molto meno lag su una connessione lenta al di fuori se il server mappa ottiene / genera le piastrelle durante il fine settimana invece di colpire la Google Map API per tutto il tempo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top