Pergunta

Apenas curioso, se o JavaScript API V3 do Google Maps pode ser armazenado em cache no servidor local?

Porque, às vezes, minhas páginas da intranet estão carregando lentamente por causa da conexão com a Internet mais lenta. Caso contrário, ele carregaria o arquivo do servidor local e desaceleraria apenas quando a solicitação do mapa for feita.

Estou pronto para executar um trabalho de cron para atualizar o arquivo JavaScript de vez em quando.

Obrigado por qualquer entrada.

Foi útil?

Solução

É impossível "como está".

Quando você solicita o script do Google, eles enviam cabeçalhos ao longo do script e esses cabeçalhos contém a diretiva "sem cache".

Portanto, se você deseja que eles sejam em cache, você deve criar um proxy. Em vez de apontar o script SRC no Google, você o aponta para o seu servidor. Seu servidor, em seguida, faça a chamada para o Google e envie a resposta de volta ao cliente.

Dessa forma, você terá controle sobre o cabeçalho HTTP e o cache. Você também pode fazer o armazenamento em cache no conteúdo do script para fazer menos conexões com o Google.

Eu não aconselharia alguém a fazer isso em uma produção ou em um site de missão crítica. Todas as APIs do Google são atualizadas com frequência e estão ligadas mais ou menos juntas. Se algo sair de sincronia com outra coisa, você terá um bug difícil de rastrear em suas mãos.

Espero que ajude.

Editar: Ouvi dizer que você estava colocando seus scripts no HEAD Seção do seu documento. Talvez isso esteja prejudicando seu tempo de carregamento de página "percebido". Tente mover o download do script antes do </body> tag e a inicialização do mapa no onload evento da página.

Mike

Outras dicas

A partir de 2016, o JS é devolvido com o cabeçalho "Cache-Control: Public, Max-Aage = 1800", por isso é armazenado em cache por pelo menos meia hora.

IMHO você não pode cache. O script da API chama objetos no servidor do Google. No máximo, você pode capturar os resultados e armazená -los em cache como imagens (mas depois perde a interatividade).

Se fosse possível armazenar os resultados do GMAP em cache, as pessoas apenas armazenariam o banco de dados inteiro do Google localmente e não acho que isso faça parte do contrato do usuário;).

Se você deseja mapas offline, terá a ver com imagens não interativas ou comprar um servidor de mapa.

Uma opção que não teria você violar os Termos de Serviço do Google seria manter um cache local de ladrilhos OpenStreetMap com o script OpenLayers para visualizá -los. Basicamente, usando dados gratuitos para criar seu próprio servidor de mapa.

Se houver pontos de interesse específicos que sejam importantes para sua intranet, você poderá garantir que eles estejam no OpenStreetMap e configure um servidor de renderização com apenas os recursos necessários. Afinal, a sobreposição de cada escola em um distrito sobre alguns PNGs levará mais trabalho, apenas mostrando os PNG feitos com as escolas nelas.

Também seria necessário muito menos atraso em uma conexão externa lenta se o seu servidor de mapa obtiver/gerar os ladrilhos durante o fim de semana, em vez de atingir a API do Google Map o tempo todo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top