Otimizar o uso do Web Service

Visão geral

Se o seu aplicativo excede os limites de uso para um serviço Web das Google Maps APIs, o serviço retorna uma mensagem de erro. Se o seu aplicativo continuar estendendo os limites de uso, ele pode ter o acesso ao serviço Web bloqueado e, em alguns casos, receber respostas "403 Forbidden".

Se as solicitações de serviço Web do aplicativo receberem mensagens de erro, é possível fazer o seguinte:

  1. Diminua o uso otimizando os aplicativos para usar os serviços Web com mais eficácia.
  2. Aumente os limites de uso, quando possível, comprando Maps APIs Credits.

Antes de começar

Antes de otimizar o uso do serviço Web do seu aplicativo, verifique se está usando o serviço correto para o seu caso de uso e a licença da Maps API correta.

Valide seu caso de uso

Os serviços Web das Google Maps APIs são melhores para aplicativos que não exigem entrada em tempo real de usuários ou quando um navegador da Web não é usado. Por exemplo, você deve usar serviços Web se o seu aplicativo usa um conjunto de dados que é independente da entrada de usuário — por exemplo, um conjunto de endereços fixo em um site de imobiliária que precisa ser geocodificado.

Observe que, com os serviços Web, o limite das consultas por segundo (QPS) se aplica à licença do Premium Plan, independente de quantas solicitações de endereços IP foram enviadas.

Por outro lado, os serviços do lado do cliente disponíveis com a Google Maps JavaScript API têm taxas limitadas por sessão de navegador para que as solicitações sejam distribuídas entre todos os usuários e escalone o número do crescimento de usuários. Portanto, os serviços do lado do cliente são melhores para aplicativos que geocodificam a entrada de endereço de usuários em tempo real, como um localizador de lojas que procura lojas perto do endereço residencial de um usuário.

Confira uma discussão mais detalhada sobre o uso de serviços Web em Estratégias de Geocodificação. Apesar de ser específico para geocodificação, as recomendações neste documento aplicam-se a todos os serviços Web, explicando quando você deve usar serviços Web do lado do servidor ou equivalentes do lado do cliente.

Use sua licença Google Maps APIs Premium Plan

Confira se as solicitações do seu aplicativo incluem os detalhes de autenticação corretos para a sua licença do Google Maps APIs Premium Plan — ou seja, o ID de cliente ou uma chave de API do projeto do Premium Plan no Google API Console.

Se o seu aplicativo não usa a licença Premium Plan corretamente, está sujeita aos limites de uso do Plano padrão e às restrições dos Termos de Serviço e não estão cobertos pelo ANS do Premium Plan. Além disso, você não receberá suporte técnico para o aplicativo.

Como otimizar o uso do serviço Web

Para usar os serviços Web com mais eficácia, é possível diminuir o uso enviando solicitações somente quando necessário e espalhando o uso igualmente para mantê-lo sob os limites.

Armazenar resultados em cache

A seção 10.5.d dos Termos de Serviço da Maps API especifica que você pode armazenar em cache os dados do Google Maps temporariamente, por um período de até 30 dias, para melhorar o desempenho do seu aplicativo. Ao armazenar as respostas do serviço Web em cache o seu aplicativo pode evitar enviar solicitações duplicadas em períodos curtos. Na verdade, as respostas do serviço Web sempre incluem o cabeçalho HTTP Cache-Control, que indica o período pelo qual você pode armazenar em cache o resultado — por exemplo, Cache-Control: public, max-age=86400. Visando a eficácia, faça com que seu aplicativo sempre armazene em cache os resultados por pelo menos a quantidade especificada neste cabeçalho, mas não mais do que o tempo especificado nos Termos de Serviço da Maps API.

É possível implementar o armazenamento em cache usando proxies da Web, a maioria da qual realiza esta função exclusiva. Ou você pode usar uma implementação de proxy da Web própria. Observe que algumas bibliotecas de cliente HTPP também armazenam em cache respostas de HTTP.

Para aumentar as taxas de ocorrência em cache, lembre-se de normalizar as coordenadas de latitude/longitude arredondando para 6 números decimais, que fornece uma precisão de cerca de 11 centímetros ao redor do equador. Se adicionar mais decimais, os resultados dos serviços Web não mudarão, mas as taxas de ocorrência em cache diminuirão.

Limitar solicitações

Para evitar exceder os limites de uso, é possível configurar o aplicativo para limitar solicitações colocando-as em uma fila que acompanha quando as solicitações são enviadas. Se o seu aplicativo recebe uma solicitação além do limite de QPS, ele deve verificar o timestamp da primeira solicitação e aguardar 1 segundo.

Mesmo com a limitação, os aplicativos ainda devem receber respostas com o código de status OVER_QUERY_LIMIT. Configure o aplicativo para inserir um pequeno atraso (20 ms) e tente novamente se ele receber tal resposta.

Aumentar limite de QPS

Se quiser implementar a limitação corretamente, o aplicativo não deve enviar solicitações que excedam os limites de uso. No entanto, o seu aplicativo pode receber entradas grandes demais ou em uma velocidade superior do que a permitida pelos limites de uso do serviço Web (geralmente, 50 QPS. Neste caso, as filas de limitação podem ficar grandes, criando uma lista de pendências de solicitações. Além disso, o Places API Web Service é inicialmente limitado a 5 QPS. Se o seu aplicativo recebe uma lista de pendências com frequência, seja em momentos específicos de cada dia ou durante o dia, talvez seja necessário aumentar os limites de QPS da sua licença Google Maps APIs Premium Plan. Para solicitar um aumento de QPS, fale com o Gerente de Conta de Vendas das Google Maps APIs.