Diffuser des fichiers statiques

Les applications gèrent les requêtes dynamiques, mais elles doivent bien souvent également diffuser des fichiers statiques tels que JavaScript, des images et des CSS. Les applications de l'environnement flexible peuvent diffuser des fichiers statiques à partir d'un service Google Cloud Platform tel que Cloud Storage, les diffuser directement ou utiliser un réseau tiers de diffusion de contenu (CDN).

Diffuser des fichiers depuis Cloud Storage

Cloud Storage peut héberger des éléments statiques destinés à des applications Web dynamiques. Utiliser Cloud Storage au lieu de diffuser directement depuis votre application présente quelques avantages, dont les suivants :

  • Cloud Storage fonctionne essentiellement comme un réseau de diffusion de contenu. Cette méthode ne nécessite aucune configuration spéciale, car, par défaut, tout objet lisible publiquement est mis en cache dans le réseau mondial de Cloud Storage.
  • La charge de votre application se trouve réduite lorsque la diffusion des éléments statiques est effectuée par le biais de Cloud Storage. Suivant le nombre d'éléments statiques à diffuser et la fréquence d'accès, cela peut réduire considérablement le coût d'exécution de l'application.
  • Les frais d'utilisation de la bande passante pour l'accès aux contenus sont souvent moins élevés avec Cloud Storage.

Vous pouvez importer vos éléments dans Cloud Storage à l'aide du SDK Cloud ou de l'API Cloud Storage.

La bibliothèque cliente Google Cloud fournit un client Ruby idiomatique pour Cloud Storage, ce qui vous permet de stocker et de récupérer des données avec Cloud Storage dans une application App Engine.

Exemple de diffusion à partir d'un bucket Cloud Storage

Cet exemple simple crée un bucket Cloud Storage et importe des éléments statiques à l'aide du SDK Cloud :

  1. Créez un bucket. Il est courant, mais pas obligatoire, de nommer le bucket d'après l'ID de votre projet. Le nom du bucket doit être unique.

    gsutil mb gs://<your-bucket-name>
    
  2. Configurez la LCA pour qu'elle accorde l'accès en lecture aux éléments du bucket.

    gsutil defacl set public-read gs://<your-bucket-name>
    
  3. Importez des éléments de contenu dans le bucket. La commande rsync est généralement le moyen le plus rapide et le plus simple d'importer et de mettre à jour des éléments. Vous pouvez également utiliser cp.

    gsutil -m rsync -r ./static gs://<your-bucket-name>/static
    

Vous pouvez maintenant accéder à vos éléments statiques via https://storage.googleapis.com/<your-bucket-name>/static/....

Pour savoir comment utiliser Cloud Storage pour diffuser des éléments statiques, y compris à partir d'un nom de domaine personnalisé, consultez la page Héberger un site Web statique.

Diffuser des fichiers à partir d'autres services GCP

Vous pouvez également utiliser Cloud CDN ou d'autres services de stockage GCP.

Diffuser des fichiers directement à partir de votre application

Diffuser des fichiers depuis une application est généralement simple. Cependant, vous devez tenir compte de quelques inconvénients :

  • Les requêtes sur les fichiers statiques peuvent utiliser des ressources normalement prévues pour les requêtes dynamiques.
  • Selon la configuration que vous utilisez, la diffusion de fichiers depuis une application peut générer une latence de réponse, ce qui peut également ralentir la création d'instances destinées à supporter la charge de travail.

Conseil : Dans les environnements de production, il est généralement recommandé de diffuser le contenu statique indépendamment de l'application, que ce soit dans GCP ou en externe à l'aide d'un CDN tiers.

Exemple de diffusion de fichiers statiques avec une application

La plupart des frameworks Web permettent la diffusion de fichiers statiques.

Sinatra

Le framework Web Sinatra diffuse par défaut les fichiers du répertoire ./public. Cette application inclut une vue qui fait référence à /application.css.

doctype html
html
  head
    title Serving Static Files
    link rel="stylesheet" href="/application.css"
    script src="/application.js"
  body
    p This is a static file serving example.

La feuille de style est située à l'emplacement ./public/application.css. Elle est diffusée depuis /application.css.

body {
  font-family: Verdana, Helvetica, sans-serif;
  background-color: #CCCCFF;
}

Ruby on Rails

Le framework Web Ruby on Rails diffuse par défaut les fichiers du répertoire ./public. Des fichiers JavaScript et CSS statiques peuvent également être générés par le pipeline d'éléments Rails.

L'exemple d'application ci-dessous présente une vue qui inclut toutes les feuilles de style de l'application :

doctype html
html
  head
    title Serving Static Files
    = stylesheet_link_tag "application", media: "all"
    = javascript_include_tag "application"
    = csrf_meta_tags
  body
    = yield

La feuille de style elle-même est un fichier Sass situé à l'emplacement ./app/assets/stylesheets/main.css.sass.

body
  font-family: Verdana, Helvetica, sans-serif
  background-color: #CCCCFF

Par défaut, les applications Rails ne génèrent et ne diffusent aucun élément statique lors de leur exécution en production.

L'environnement d'exécution Ruby exécute rake assets:precompile lors du déploiement pour générer des éléments statiques, et définit la variable d'environnement RAILS_SERVE_STATIC_FILES pour activer la diffusion de fichiers statiques en production.

Cette page vous a-t-elle été utile ? Évaluez-la :

Envoyer des commentaires concernant…

Environnement flexible App Engine pour les documents Ruby