Como veicular arquivos estáticos

Além de processar solicitações dinâmicas, os aplicativos geralmente precisam disponibilizar arquivos estáticos adicionais, como JavaScript, imagens e CSS. O ambiente flexível permite que você decida como disponibilizar conteúdo estático para seu aplicativo. É possível fazer isso diretamente do aplicativo, hospedá-lo em uma opção do GCP como o Cloud Storage ou usar uma content delivery network (CDN) de terceiros.

Como disponibilizar arquivos do App Engine

Normalmente, a disponibilização de arquivos do seu aplicativo é simples. No entanto, há algumas desvantagens que você deve considerar:

  • As solicitações de arquivos estáticos podem usar recursos utilizados em solicitações dinâmicas.
  • Dependendo da sua configuração, a disponibilização de arquivos do seu aplicativo pode resultar em latência de resposta, o que também pode acontecer quando novas instâncias forem criadas para processar o carregamento.

Dica: em ambientes de produção, recomenda-se disponibilizar o conteúdo estático separadamente do aplicativo, seja no GCP ou externamente usando uma CDN de terceiros.

Exemplo de disponibilização de arquivos estáticos com seu aplicativo

No Go, é possível usar o http.FileServer ou http.ServeFile para disponibilizar arquivos diretamente do seu aplicativo.

package main

import (
	"fmt"
	"net/http"

	"google.golang.org/appengine"
)

func main() {
	// Serve static files from "static" directory.
	http.Handle("/static/", http.FileServer(http.Dir(".")))

	http.HandleFunc("/", homepageHandler)
	appengine.Main()
}

const homepage = `<!doctype html>
<html>
<head>
  <title>Static Files</title>
  <link rel="stylesheet" type="text/css" href="/static/main.css">
</head>
<body>
  <p>This is a static file serving example.</p>
</body>
</html>`

func homepageHandler(w http.ResponseWriter, r *http.Request) {
	fmt.Fprint(w, homepage)
}

Como disponibilizar arquivos do GCP

Também é possível usar o Cloud CDN ou outro serviço de armazenamento do GCP, como o Cloud Storage.

Como disponibilizar arquivos do Cloud Storage

Use o Cloud Storage para hospedar recursos estáticos de aplicativos dinâmicos da Web. Usar o Cloud Storage em vez da disponibilização direta do aplicativo inclui estes benefícios:

  • O Cloud Storage basicamente funciona como uma content delivery network. Isso não requer nenhuma configuração especial porque qualquer objeto publicamente legível é armazenado em cache na rede global do Cloud Storage por padrão.
  • A carga do aplicativo é reduzida ao descarregar os ativos estáticos em disponibilização no Cloud Storage. Dependendo de quantos você tiver e da frequência de acesso, isso reduz bastante o custo de execução do aplicativo.
  • As tarifas de largura de banda para acessar conteúdo costumam ser menores com o Cloud Storage.

É possível fazer o upload dos recursos no Cloud Storage usando o Cloud SDK ou a API Cloud Storage.

Exemplo de disponibilização em um intervalo do Cloud Storage

Neste exemplo simples, criamos um intervalo do Cloud Storage e carregamos recursos estáticos usando o Cloud SDK:

  1. Crie um intervalo. É comum dar o nome do código do projeto ao intervalo, mas isso não é obrigatório. O nome precisa ser exclusivo de maneira geral.

    gsutil mb gs://<your-bucket-name>
    
  2. Defina que a ACL conceda acesso de leitura aos itens no intervalo.

    gsutil defacl set public-read gs://<your-bucket-name>
    
  3. Faça o upload dos itens para o intervalo. Geralmente, o comando rsync é o jeito mais rápido e fácil de carregar e atualizar ativos. Também é possível usar o cp.

    gsutil -m rsync -r ./static gs://<your-bucket-name>/static
    

Agora você pode acessar os recursos estáticos via https://storage.googleapis.com/<your-bucket-name>/static/....

Para saber mais sobre como usar o Cloud Storage para disponibilizar recursos estáticos, incluindo a disponibilização a partir de um nome de domínio personalizado, consulte Como hospedar um site estático.

Para mais informações sobre como usar a API Cloud Storage para fazer o download, upload e a manipulação de arquivos dinamicamente usando o aplicativo, consulte Como usar o Cloud Storage.

Como disponibilizar por uma content delivery network de terceiros

É possível usar qualquer CDN de terceiros para disponibilizar arquivos estáticos e armazenar em cache solicitações dinâmicas. No entanto, o custo e a latência do aplicativo podem aumentar.

Para melhorar o desempenho, use uma CDN de terceiros compatível com o CDN Interconnect.

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Ambiente flexível do App Engine para Go