Spesso le applicazioni devono gestire 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 di Google Cloud come Cloud Storage, pubblicarli direttamente o utilizzare una rete CDN (Content Delivery Network) di terze parti.
L'hosting di un sito statico su Google Cloud può costare meno rispetto all'utilizzo di un provider host tradizionale, in quanto Google Cloud offre un livello gratuito.Gestione dei file da Cloud Storage
Cloud Storage può ospitare asset statici per app web dinamiche. I vantaggi dell'utilizzo di Cloud Storage invece della pubblicazione direttamente dall'app includono:
- Cloud Storage funziona essenzialmente come una rete CDN (Content Delivery Network). Ciò non richiede alcuna configurazione speciale perché per impostazione predefinita qualsiasi oggetto leggibile pubblicamente viene memorizzato nella cache nella rete globale Cloud Storage.
- Il carico della tua app sarà ridotto grazie alla pubblicazione di asset statici su Cloud Storage. A seconda del numero di asset statici di cui disponi e della frequenza di accesso, il costo di esecuzione della tua app può ridurre di una cifra significativa.
- I costi 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 lo strumento a riga di comando gsutil
o l'API Cloud Storage.
La libreria client di Google Cloud fornisce un client idiomatico per Cloud Storage, per l'archiviazione e il recupero dei dati con Cloud Storage in un'app di App Engine.
Esempio di pubblicazione da un bucket Cloud Storage
Questo semplice esempio crea un bucket Cloud Storage e carica asset statici utilizzando Google Cloud CLI:
Creare un bucket. È comune, ma non obbligatorio, assegnare al bucket un nome in base all'ID progetto. Il nome del bucket deve essere univoco a livello globale.
gsutil mb gs://<your-bucket-name>
Imposta l'ACL per concedere l'accesso in lettura agli elementi del bucket.
gsutil defacl set public-read gs://<your-bucket-name>
Caricare elementi nel bucket. Il comando
rsync
è in genere il modo più semplice e veloce per caricare e aggiornare gli asset. Puoi anche usarecp
.gsutil -m rsync -r ./static gs://<your-bucket-name>/static
Ora puoi accedere alle tue risorse statiche tramite
https://storage.googleapis.com/<your-bucket-name>/static/...
.
Per ulteriori dettagli su come utilizzare Cloud Storage per pubblicare asset statici, inclusa la modalità di pubblicazione da un nome di dominio personalizzato, consulta Come ospitare un sito web statico.
Gestione di file da altri servizi Google Cloud
Puoi anche scegliere di utilizzare Cloud CDN o altri servizi di archiviazione di Google Cloud.
Pubblicare file direttamente dall'app
Per pubblicare file statici nell'ambiente standard,
devi definire 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à del file app.yaml
. Le richieste a file statici o
directory statiche vengono gestite direttamente dall'infrastruttura di 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 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 precedente gestisce tre pattern URL:
Il gestore /favicon.ico mappa una richiesta specifica per
/favicon.ico
a un file denominatofavicon.ico
nella directory root 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 la parte restante del percorso ai file nella directory./public
. Se nella directory viene trovato un file appropriato, i contenuti di quel file vengono restituiti al client.Il gestore /.* associa tutti gli altri URL e li indirizza alla tua app.
I pattern dei percorsi degli URL vengono testati nell'ordine in cui vengono visualizzati in app.yaml
, pertanto
il pattern per i file statici deve essere definito prima del pattern /.*
.
Per ulteriori informazioni, consulta il riferimento app.yaml
.
Pubblicazione da una rete CDN (Content Delivery Network) di terze parti
Puoi utilizzare qualsiasi CDN di terze parti esterna per gestire i file statici e memorizzare nella cache le richieste dinamiche, ma la tua app potrebbe riscontrare un aumento della latenza e dei costi.
Per migliorare le prestazioni, dovresti utilizzare una CDN di terze parti che supporta CDN Interconnect.