Archiviazione e pubblicazione di file statici

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 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 invece di pubblicare direttamente dall'app includono:

  • Cloud Storage funziona essenzialmente come una 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 dell'app verrà ridotto spostando la pubblicazione degli 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 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:

  1. Crea 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>
    
  2. 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
    
  3. Carica gli elementi nel bucket. Il comando rsync è in genere il più veloce modo più semplice per caricare e aggiornare gli asset. Puoi anche usare cp.

    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

Hai anche la possibilità di utilizzare Cloud CDN o altro spazio di archiviazione Google Cloud i servizi di machine learning.

Pubblicazione di 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 dalle impostazioni di ridimensionamento nel 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 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 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 denominato favicon.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 di 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 relativi contenuti vengono restituiti al client.

  • 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.