Spesso le applicazioni 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'opzione Google Cloud 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 offre un livello gratuito.Pubblicazione di file da Cloud Storage
Cloud Storage può ospitare asset statici per app web dinamiche. I vantaggi dell'utilizzo di Cloud Storage invece di pubblicare direttamente dall'app includono:
- Cloud Storage funziona essenzialmente come una content delivery network. Questo non richiede alcuna configurazione speciale, perché per impostazione predefinita qualsiasi oggetto di lettura pubblica viene memorizzato nella rete globale di Cloud Storage.
- Il carico della tua app verrà ridotto spostando la pubblicazione di asset statici su Cloud Storage. A seconda del numero di asset statici e della frequenza di accesso, questo può ridurre in modo significativo il costo di esecuzione dell'app.
- Gli addebiti per la larghezza di banda per l'accesso ai contenuti possono spesso essere inferiori con Cloud Storage.
Puoi caricare gli asset su Cloud Storage utilizzando Google Cloud CLI o l'API Cloud Storage.
La libreria client Google Cloud fornisce un client per Cloud Storage idiomatico 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 in modo da concedere l'accesso in lettura pubblico agli elementi del bucket.
gcloud storage buckets add-iam-policy-binding gs://<var>your-bucket-name</var> --member=allUsers --role=roles/storage.objectViewer
Carica gli elementi nel bucket. In genere, il comando
rsync
è 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 alle risorse statiche tramite
https://storage.googleapis.com/<var>your-bucket-name</var>/static/...
.
Per ulteriori dettagli su come utilizzare Cloud Storage per pubblicare risorse statiche, incluso come pubblicarle da un nome di dominio personalizzato, consulta Come ospitare un sito web statico.
Pubblicazione di file da altri servizi Google Cloud
Puoi anche utilizzare Cloud CDN o altri servizi di archiviazione di Google Cloud.
Pubblicazione di file direttamente dall'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 ridimensionamento nel file app.yaml
. Le richieste a file o directory statici vengono gestite direttamente dall'infrastruttura di App Engine e non raggiungono il runtime del linguaggio dell'applicazione.
Configurazione dei gestori di file statici
Per configurare l'app in modo da pubblicare la directory ./public
dall'URL /static
,
devi definire un gestore nel file app.yaml
.
Di seguito viene mostrato come pubblicare i file statici della directory ./public
di un'app di esempio. Il modello per la pagina index.html
di questa app
incarica il browser di caricare il file main.css
, ad esempio:
<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 riportato sopra gestisce tre pattern URL:
Il gestore /favicon.ico mappa una richiesta specifica per
/favicon.ico
a un file denominatofavicon.ico
nella directory principale dell'app.L'handler /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 relativi contenuti vengono restituiti al client.L'handler /.* corrisponde a tutti gli altri URL e li indirizza alla tua app.
I pattern di percorso dell'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 la documentazione di riferimento app.yaml
.
Pubblicazione da una rete CDN (Content Delivery Network) di terze parti
Puoi utilizzare qualsiasi CDN di terze parti esterna per pubblicare i file statici e memorizzare nella cache le richieste dinamiche, ma la tua app potrebbe registrare un aumento della latenza e dei costi.
Per migliorare le prestazioni, ti consigliamo di utilizzare una CDN di terze parti che supporti CDN Interconnect.