As aplicações precisam frequentemente de publicar ficheiros estáticos, como JavaScript, imagens e CSS, além de processar pedidos dinâmicos. As apps no ambiente padrão podem publicar ficheiros estáticos a partir de uma Google Cloud opção, como o Cloud Storage, publicá-los diretamente ou usar uma rede de fornecimento de conteúdo (CDN) de terceiros.
O alojamento do seu site estático no Google Cloud pode custar menos do que usar um fornecedor de alojamento tradicional, uma vez que o Google Cloud oferece um nível gratuito.Publicar ficheiros a partir do Cloud Storage
O Cloud Storage pode alojar recursos estáticos para apps Web dinâmicas. As vantagens de usar o Cloud Storage em vez de publicar diretamente a partir da sua app incluem:
- Essencialmente, o Cloud Storage funciona como uma rede de distribuição de conteúdo. Isto não requer nenhuma configuração especial porque, por predefinição, qualquer objeto legível publicamente é colocado em cache na rede global do Cloud Storage.
- A carga da sua app é reduzida ao transferir a publicação de recursos estáticos para o Cloud Storage. Consoante o número de recursos estáticos que tiver e a frequência de acesso, isto pode reduzir significativamente o custo de execução da sua app.
- As cobranças de largura de banda para aceder a conteúdo podem ser frequentemente inferiores com o Cloud Storage.
Pode carregar os seus recursos para o Cloud Storage através da CLI do Google Cloud ou da API Cloud Storage.
A biblioteca de cliente do Google Cloud fornece um cliente idiomático para o Cloud Storage, para armazenar e obter dados com o Cloud Storage numa app do App Engine.
Exemplo de publicação a partir de um contentor do Cloud Storage
Este exemplo cria um contentor do Cloud Storage e carrega recursos estáticos através da CLI gcloud:
Crie um contentor. É comum, mas não obrigatório, dar ao contentor o nome do ID do projeto. O nome do contentor tem de ser globalmente exclusivo.
gcloud storage buckets create gs://<var>your-bucket-name</var>
Defina a Política IAM para conceder acesso de leitura público aos itens no contentor.
gcloud storage buckets add-iam-policy-binding gs://<var>your-bucket-name</var> --member=allUsers --role=roles/storage.objectViewer
Carregue itens para o contentor. Normalmente, o comando
rsync
é a forma mais rápida e fácil de carregar e atualizar recursos. Também pode usarcp
.gcloud storage rsync ./static gs://<var>your-bucket-name</var>/static --recursive
Agora, pode aceder aos seus recursos estáticos através do
https://storage.googleapis.com/<var>your-bucket-name</var>/static/...
.
Para mais detalhes sobre como usar o Cloud Storage para publicar recursos estáticos, incluindo como publicar a partir de um nome de domínio personalizado, consulte o artigo Como alojar um Website estático.
Publicação de ficheiros de outros Google Cloud serviços
Também tem a opção de usar o Cloud CDN ou outros serviços de armazenamento Google Cloud .
Publicar ficheiros diretamente a partir da sua app
Para publicar ficheiros estáticos no ambiente padrão,
defina os controladores no ficheiro app.yaml
usando os elementos
static_dir
ou
static_files
.
O conteúdo nos ficheiros estáticos ou diretórios estáticos não é afetado pelas definições de escalabilidade no seu ficheiro app.yaml
. Os pedidos de ficheiros estáticos ou diretórios estáticos são processados diretamente pela infraestrutura do App Engine e não chegam ao tempo de execução da linguagem da aplicação.
Configurar os controladores de ficheiros estáticos
Para configurar a sua app para publicar o diretório ./public
a partir do URL /static
, define um controlador no ficheiro app.yaml
.
O exemplo seguinte demonstra como publicar os ficheiros estáticos do diretório ./public
de uma app de exemplo. O modelo da página index.html
desta app
indica ao navegador que carregue o ficheiro main.css
, por exemplo:
<link type="text/css" rel="stylesheet" href="/static/css/main.css">
O diretório ./public
é definido no elemento static_dir
do ficheiro app.yaml
do projeto:
handlers: - url: /favicon\.ico static_files: favicon.ico upload: favicon\.ico - url: /static static_dir: public - url: /.* secure: always redirect_http_response_code: 301 script: auto
A secção handlers
no exemplo acima processa três padrões de URL:
O controlador /favicon.ico mapeia um pedido especificamente para
/favicon.ico
para um ficheiro denominadofavicon.ico
no diretório raiz da app.O controlador /static mapeia pedidos de URLs que começam por
/static
. Quando o App Engine recebe um pedido de um URL que começa por/static
, mapeia o resto do caminho para ficheiros no diretório./public
. Se for encontrado um ficheiro adequado no diretório, o conteúdo desse ficheiro é devolvido ao cliente.O controlador /.* corresponde a todos os outros URLs e direciona-os para a sua app.
Os padrões de caminho do URL são testados pela ordem em que aparecem em app.yaml
. Por isso, o padrão dos seus ficheiros estáticos deve ser definido antes do padrão /.*
.
Para mais informações, consulte a app.yaml
referência.
Publicação a partir de uma rede de fornecimento de conteúdo de terceiros
Pode usar qualquer RFC externa de terceiros para publicar os seus ficheiros estáticos e colocar em cache pedidos dinâmicos, mas a sua app pode sofrer um aumento da latência e dos custos.
Para um desempenho melhorado, deve usar uma CDN de terceiros que suporte o CDN Interconnect.