Spesso le applicazioni devono pubblicare file statici come JavaScript, immagini e CSS oltre a gestire le richieste dinamiche. App nella versione standard in grado di pubblicare file statici da un'opzione di Google Cloud come Cloud Storage, li gestisci direttamente o usi contenuti di terze parti. rete di distribuzione (CDN).
L'hosting di un sito statico su Google Cloud può costare meno rispetto all'utilizzo di una tradizionale, in quanto Google Cloud fornisce 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 anziché pubblicarli direttamente dalla tua app includono:
- Cloud Storage funziona essenzialmente come una rete CDN (Content Delivery Network). Non è richiesta alcuna configurazione speciale perché, per impostazione predefinita, un oggetto leggibile pubblicamente è memorizzato nella cache nella rete globale Cloud Storage.
- Il carico della tua app sarà ridotto riducendo la pubblicazione di asset statici su di archiviazione ideale in Cloud Storage. In base al numero di risorse statiche di cui disponi e di accesso, questo può ridurre il costo di esecuzione dell'app per una quantità significativa.
- I costi della larghezza di banda per l'accesso ai contenuti possono spesso essere inferiori di archiviazione ideale in Cloud Storage.
Puoi caricare i tuoi asset in Cloud Storage utilizzando il metodo Google Cloud CLI o l'API Cloud Storage.
La libreria client di Google Cloud offre un modello client a Cloud Storage, per l'archiviazione e il recupero dei dati con Cloud Storage dell'app App Engine.
Esempio di pubblicazione da un bucket Cloud Storage
Questo semplice esempio crea un bucket Cloud Storage e carica un file utilizzando gcloud CLI:
Creare un bucket. È comune, ma non obbligatorio, assegnare un nome al bucket dopo il tuo 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 del bucket.
gcloud storage buckets add-iam-policy-binding gs://<var>your-bucket-name</var> --member=allUsers --role=roles/storage.objectViewer
Caricare elementi nel bucket. Il comando
rsync
è in genere il più veloce modo più semplice per caricare e aggiornare gli asset. Puoi anche usarecp
.gcloud storage rsync ./static gs://<var>your-bucket-name</var>/static --recursive
Ora puoi accedere alle tue risorse statiche tramite
https://storage.googleapis.com/<var>your-bucket-name</var>/static/...
.
Per maggiori dettagli su come utilizzare Cloud Storage per pubblicare asset statici, incluse le modalità di pubblicazione da un nome di dominio personalizzato, consulta Come ospitare una Sito web.
Gestione di file da altri servizi Google Cloud
Hai anche la possibilità di utilizzare Cloud CDN o altro spazio di archiviazione Google Cloud i servizi di machine learning.
Pubblicare file direttamente dall'app
Per pubblicare file statici nell'ambiente standard,
devi definire i gestori nel file app.yaml
utilizzando
static_dir
o
static_files
elementi.
I contenuti dei file statici o delle directory statiche non sono interessati
in base alle impostazioni di scalabilità nel tuo file app.yaml
. Richieste di file statici o
e le directory statiche sono gestite 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
,
devi definire un gestore nel tuo file app.yaml
.
Di seguito viene illustrato come pubblicare i file statici di un esempio
nella directory ./public
dell'app. 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
della tabella
File app.yaml
:
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
in un file denominatofavicon.ico
nella directory principale dell'app.Il gestore /static mappa le richieste per gli URL che iniziano con
/static
. Quando App Engine riceve una richiesta di URL che inizia con/static
, mappa la parte restante del percorso ai file nella directory./public
. Se file appropriato nella directory, i contenuti di tale file vengono i dati restituiti al cliente.Il gestore /.* associa tutti gli altri URL e li indirizza alla tua app.
I pattern di percorso degli URL vengono testati nell'ordine in cui appaiono in app.yaml
, pertanto
il pattern per i tuoi file statici deve essere definito prima del pattern /.*
.
Per ulteriori informazioni, consulta il app.yaml
riferimento.
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 la cache richieste dinamiche, ma la tua app potrebbe notare un aumento di latenza e costi.
Per migliorare le prestazioni, devi utilizzare una CDN di terze parti che supporti CDN Interconnect.