Le applicazioni spesso devono pubblicare file statici come JavaScript, immagini e CSS, oltre a gestire le richieste dinamiche. Le app nell'ambiente flessibile possono pubblicare file statici da un' Google Cloud opzione come Cloud Storage, pubblicarli direttamente o utilizzare una rete CDN (Content Delivery Network) di terze parti.
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 dall'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 dell'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 dall'app
La pubblicazione di file dall'app è in genere semplice, tuttavia ci sono un paio di inconvenienti da considerare:
- Le richieste di file statici possono utilizzare risorse che altrimenti verrebbero utilizzate per le richieste dinamiche.
- A seconda della configurazione, la pubblicazione di file dall'app può comportare una latenza di risposta, che può influire anche sulla creazione di nuove istanze per la gestione del carico.
Esempio di pubblicazione di file statici con l'app
Vai
L'esempio seguente mostra come pubblicare file statici con l'app.
Puoi utilizzare l'applicazione di esempio in questa guida per qualsiasi versione supportata di Go specificando la versione del runtime
e il sistema operativo nel file app.yaml.
Puoi utilizzare lo standard
http.FileServer
o http.ServeFile
per pubblicare i file direttamente dall'app.
Java
L'esempio seguente mostra come pubblicare file statici con l'app.
Puoi utilizzare l'applicazione di esempio in questa guida per qualsiasi versione supportata di Java specificando la
versione del runtime e il sistema operativo nel file app.yaml.
Il container servlet del runtime Java utilizzerà il descrittore
di deployment,
web.xml file, per mappare gli URL ai servlet, inclusi gli asset statici. Se non specifichi un web.xml, viene utilizzato un valore predefinito che mappa tutto al servlet predefinito.
In questo esempio, ./src/main/webapp/index.html si riferisce a un foglio di stile pubblicato da /stylesheets/styles.css.
Il file styles.css si trova in ./src/main/webapp/stylesheets/styles.css.
Puoi configurare in modo esplicito la gestione dei file statici nel file web.xml.
Ad esempio, se vuoi mappare le richieste di tutti i file con estensione .jpg:
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.jpg</url-pattern>
</servlet-mapping>
Se utilizzi un framework web, ad esempio Play, dovrai consultare la documentazione del framework sugli asset statici.
Node.js
L'esempio seguente mostra come pubblicare file statici con l'app.
Puoi utilizzare l'applicazione di esempio in questa guida per qualsiasi versione supportata di Node.js specificando
la versione del runtime e il sistema operativo nel file app.yaml.
La maggior parte dei framework web include il supporto per la pubblicazione di file statici. In questo esempio,
l'applicazione utilizza il
express.static
middleware per pubblicare i file dalla directory ./public all'URL /static.
La visualizzazione si riferisce a /static/main.css.
Il foglio di stile si trova in ./public/css, che viene pubblicato da /static/main.css.
Altri framework Node.js, come Hapi, Koa e Sails in genere supportano la pubblicazione di file statici direttamente dall'applicazione. Consulta la documentazione per i dettagli su come configurare e utilizzare i contenuti statici.
PHP
Il runtime PHP esegue nginx
per erogare l'app, che è configurata per erogare file statici in
your project directory. Devi dichiarare la directory principale del documento specificando document_root nel file app.yaml. Puoi utilizzare l'applicazione di esempio
in questa guida per qualsiasi versione supportata di PHP specificando
la versione del runtime e il sistema operativo nel file app.yaml.
Python
L'esempio seguente mostra come pubblicare file statici con l'app.
Puoi utilizzare l'applicazione di esempio in questa guida per qualsiasi
versione
supportata di Python specificando la versione del runtime e il sistema operativo in
your app.yaml file.
La maggior parte dei framework web include il supporto per la pubblicazione di file statici. In questo esempio,
l'app utilizza la funzionalità integrata di Flask
per pubblicare i file nella directory ./static dall'URL /static.
L'app include una visualizzazione che esegue il rendering del modello. Flask pubblica automaticamente tutti i contenuti nella directory ./static senza configurazione aggiuntiva.
Il modello di cui è stato eseguito il rendering dalla visualizzazione include un foglio di stile che si trova in /static/main.css.
Il foglio di stile si trova in ./static/main.css.
Altri framework Python, come Django, Pyramid, e Bottle in genere supportano la pubblicazione di file statici direttamente dall'app. Consulta la documentazione per i dettagli su come configurare e utilizzare i contenuti statici.
Ruby
La maggior parte dei framework web include il supporto per la pubblicazione di file statici.
L'esempio seguente mostra come pubblicare file statici con l'app.
Puoi utilizzare l'applicazione di esempio in questa guida per qualsiasi versione supportata di Ruby specificando la
versione del runtime e il sistema operativo nel file app.yaml.
Sinatra
Il framework web Sinatra
pubblica i file dalla directory ./public per impostazione predefinita. Questa app include una visualizzazione che fa riferimento a /application.css.
Il foglio di stile si trova in ./public/application.css, che viene pubblicato
da /application.css.
Ruby on Rails
Il framework web Ruby on Rails
pubblica i file dalla directory ./public per impostazione predefinita. I file JavaScript e CSS statici possono essere generati anche dalla pipeline degli asset di Rails.
Queste app di esempio contengono una visualizzazione del layout che include tutti i fogli di stile dell'applicazione.
Il foglio di stile è un .css file che si trova in ./public/application.css.
Per impostazione predefinita, le app Rails non generano né pubblicano asset statici quando vengono eseguite in produzione.
Il runtime Ruby esegue rake assets:precompile durante il deployment
per generare asset statici e imposta la variabile di ambiente RAILS_SERVE_STATIC_FILES per abilitare la pubblicazione di file statici in produzione.
.NET
L'esempio seguente mostra come pubblicare file statici con l'app.
Puoi utilizzare l'applicazione di esempio in questa guida per qualsiasi
versione supportata di
.NET specificando la versione del runtime
e il sistema operativo nel file app.yaml.
Per abilitare la pubblicazione di file statici, aggiungi:
Pubblicare da una rete CDN (Content Delivery Network) di terze parti
Puoi utilizzare qualsiasi CDN esterna di terze parti 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 di terze parti che supporti CDN Interconnect.