Le applicazioni spesso devono pubblicare file statici come JavaScript, immagini e CSS, oltre a gestire le richieste dinamiche. Le app nell'ambiente standard possono pubblicare file statici da un' Google Cloud opzione come Cloud Storage, pubblicarli direttamente o utilizzare una rete di distribuzione dei contenuti (CDN) di terze parti.
L'hosting del tuo sito statico su Google Cloud può costare meno rispetto all'utilizzo di un provider host tradizionale, in quanto Google Cloud fornisce un livello senza costi.Pubblicare file da Cloud Storage
Cloud Storage può ospitare asset statici per le app web dinamiche. I vantaggi dell'utilizzo di Cloud Storage anziché della pubblicazione diretta dalla tua app includono:
- Cloud Storage funziona essenzialmente come una rete CDN (Content Delivery Network). Non è necessaria alcuna configurazione speciale perché, per impostazione predefinita, qualsiasi oggetto leggibile pubblicamente viene memorizzato nella cache della rete Cloud Storage globale.
- Il carico della tua app verrà ridotto scaricando la pubblicazione di asset statici su Cloud Storage. A seconda del numero di asset statici e della frequenza di accesso, questo può ridurre notevolmente il costo di esecuzione dell'app.
- Le tariffe della larghezza di banda per l'accesso ai contenuti possono spesso essere inferiori con Cloud Storage.
Puoi caricare i tuoi asset in Cloud Storage utilizzando la Google Cloud CLI o l'API Storage.
La libreria client Google Cloud fornisce un client idiomatico per Cloud Storage, per archiviare e recuperare i dati con Cloud Storage in un' app App Engine.
Esempio di pubblicazione da un bucket Cloud Storage
Questo esempio crea un bucket Cloud Storage e carica asset statici utilizzando gcloud CLI:
Crea un bucket. È comune, ma non obbligatorio, assegnare al bucket il nome dell'ID progetto. Il nome del bucket deve essere univoco a livello globale.
gcloud storage buckets create gs://<var>your-bucket-name</var>Imposta il criterio IAM per concedere l'accesso in lettura pubblico agli elementi nel bucket.
gcloud storage buckets add-iam-policy-binding gs://<var>your-bucket-name</var> --member=allUsers --role=roles/storage.objectViewerCarica gli elementi nel bucket. Il comando
rsyncè in genere il modo più rapido e semplice per caricare e aggiornare gli asset. Puoi anche utilizzarecp.gcloud storage rsync ./static gs://<var>your-bucket-name</var>/static --recursive
Ora puoi accedere ai tuoi asset statici tramite
https://storage.googleapis.com/<var>your-bucket-name</var>/static/....
Per ulteriori dettagli su come utilizzare Cloud Storage per pubblicare asset statici, incluso come pubblicare da un nome di dominio personalizzato, consulta Come ospitare un sito web statico.
Pubblicare file da altri Google Cloud servizi
Puoi anche utilizzare Cloud CDN o altri Google Cloud servizi di archiviazione.
Pubblicare file direttamente dalla tua app
Per pubblicare file statici nell'ambiente standard,
definisci i gestori nel file app.yaml utilizzando gli elementi
static_dir
o
static_files.
I contenuti dei file statici o delle directory statiche non sono interessati dalle impostazioni di scalabilità nel file app.yaml. Le richieste a file statici o directory statiche vengono gestite direttamente dall'infrastruttura App Engine e non raggiungono il runtime del linguaggio dell'applicazione.
Configurare i gestori di file statici
Per configurare l'app in modo che pubblichi la directory ./public dall'URL /static, definisci un gestore nel file app.yaml.
Di seguito viene illustrato come pubblicare i file statici della directory ./public di un'app di esempio. Il modello per la pagina index.html di questa app indica al browser di caricare, ad esempio, il file main.css:
<link type="text/css" rel="stylesheet" href="/static/css/main.css">
La directory ./public è definita nell'elemento static_dir del file app.yaml del progetto:
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
La sezione handlers nell'esempio precedente gestisce tre pattern URL:
Il gestore /favicon.ico mappa una richiesta specificamente per
/favicon.icoa un file denominatofavicon.iconella directory principale dell'app.Il gestore /static mappa le richieste per gli URL che iniziano con
/static. Quando App Engine riceve una richiesta per un URL che inizia con/static, mappa il resto del percorso ai file nella directory./public. Se nella directory viene trovato un file appropriato, i contenuti di questo file vengono restituiti al client.Il gestore /.* corrisponde a tutti gli altri URL e li indirizza alla tua app.
I pattern dei percorsi URL vengono testati nell'ordine in cui appaiono in app.yaml, pertanto il pattern per i file statici deve essere definito prima del pattern /.*.
Per ulteriori informazioni, consulta il app.yaml
riferimento.
Tieni presente che per utilizzare i gestori statici devi specificare l'
entrypoint
elemento in app.yaml o un gestore con
script
impostato su auto.
Pubblicare da una rete CDN (Content Delivery Network) di terze parti
Puoi utilizzare qualsiasi CDN (Content Delivery Network) di terze parti esterna per pubblicare i file statici e memorizzare nella cache le richieste dinamiche, ma la tua app potrebbe subire un aumento della latenza e dei costi.
Per migliorare le prestazioni, devi utilizzare una CDN (Content Delivery Network) di terze parti che supporti CDN Interconnect.