Adaptateurs de rendu à la demande
Astro vous permet d’opter pour un rendu à la demande pour une partie ou la totalité de vos pages et de vos points de terminaison. C’est ce qu’on appelle le server-side rendering (SSR) : il s’agit de générer des pages HTML sur le serveur lorsqu’elles sont demandées et de les envoyer au client. Un adaptateur est utilisé pour exécuter votre projet sur le serveur et gérer ces demandes.
Ce rendu à la demande vous permet :
- D’implémenter des sessions pour l’état de connexion dans votre application
- De rendre les données d’une API appelée dynamiquement avec
fetch()
. - De déployer votre site sur un hôte en utilisant un adaptateur.
Envisagez d’activer le rendu de serveur à la demande dans votre projet Astro si vous avez besoin de ce qui suit :
-
Points de terminaison d’API : Créer des pages spécifiques qui fonctionnent comme des points de terminaison API pour des tâches telles que l’accès à la base de données, l’authentification et l’autorisation, tout en gardant les données sensibles cachées au client.
-
Pages protégées : Restreignez l’accès à une page en fonction des privilèges de l’utilisateur, en gérant l’accès de l’utilisateur sur le serveur.
-
Contenu changeant fréquemment : Générez des pages individuelles sans avoir à reconstruire votre site de manière statique. Ceci est utile lorsque le contenu d’une page est fréquemment mis à jour.
Adaptateurs officiels
Titre de la section Adaptateurs officielsAstro maintient des adaptateurs officiels pour Node.js, Vercel, Netlify, et Cloudflare.
Vous trouverez d’autres adaptateurs gérés par la communauté (par exemple Deno, SST, AWS) dans notre répertoire d’intégrations.
Adaptateurs SSR
Activer le rendu à la demande du serveur
Titre de la section Activer le rendu à la demande du serveurLes deux modes de rendu à la demande d’Astro (server
et hybrid
) vous permettent de profiter des performances d’un site statique en effectuant un pré-rendu des routes individuelles lorsque cela est possible, que vous ayez une application entièrement dynamique ou un site principalement statique qui ne nécessite un rendu à la demande que pour certaines routes.
Pour décider laquelle utiliser dans votre projet, choisissez l’option output
qui représente comment la plupart de vos pages et routes seront rendues :
output: 'server'
: Rendu à la demande par défaut. Utilisez cette option lorsque la plupart ou la totalité de votre site ou application doit être rendue sur le serveur à la demande. Chaque page individuelle ou point d’arrivée peut opter pour un pré-rendu.output: 'hybrid'
: Pré-rendu en HTML par défaut. Utilisez cette option lorsque la majeure partie de votre site doit être statique. Chaque page individuelle ou point de terminaison peut s’exclure du pré-rendu.
Parce que le serveur devra générer au moins quelques pages à la demande, ces deux modes nécessitent que vous ajoutiez un adaptateur pour exécuter les fonctions du serveur.
Ajouter un adaptateur
Titre de la section Ajouter un adaptateurPour déployer un projet en mode server
ou hybrid
, vous devez ajouter un adaptateur. En effet, ces deux modes nécessitent un runtime serveur : l’environnement qui exécute le code sur le serveur pour générer des pages lorsqu’elles sont demandées. Chaque adaptateur permet à Astro de générer un script qui exécute votre projet sur un runtime spécifique, tel que Vercel, Netlify ou Cloudflare.
Vous pouvez trouver les adaptateurs officiels et communautaires dans notre répertoire d’intégrations. Choisissez celui qui correspond à votre environnement de déploiement.
Installation avec astro add
Titre de la section Installation avec astro addVous pouvez ajouter n’importe lequel des adaptateurs officiels maintenus par Astro avec la commande astro add
suivante. Cela installera l’adaptateur et apportera les changements appropriés à votre fichier astro.config.mjs
en une seule étape.
Par exemple, pour installer l’adaptateur Vercel, exécutez :
Installation manuelle
Titre de la section Installation manuelleVous pouvez également ajouter un adaptateur manuellement en installant le paquet et en mettant à jour astro.config.mjs
vous-même.
Par exemple, pour installer manuellement l’adaptateur Vercel :
-
Installez l’adaptateur dans les dépendances de votre projet en utilisant votre gestionnaire de paquets préféré :
-
Ajoutez l’adaptateur à l’importation et à l’exportation par défaut de votre fichier
astro.config.mjs
, ainsi que votre mode de sortie (output
) désiré :Notez que les différents adaptateurs peuvent également avoir des paramètres de configuration différents. Lisez la documentation de chaque adaptateur, et appliquez toutes les options de configuration nécessaires à l’adaptateur que vous avez choisi dans
astro.config.mjs
Configurer server
ou hybrid
Titre de la section Configurer server ou hybridPour activer le rendu à la demande, vous devez mettre à jour votre configuration output
avec l’un des deux modes de rendu serveur.
Par exemple, pour configurer une application très dynamique où chaque page est rendue à la demande par défaut, ajoutez output: 'server'
à votre configuration Astro :
Accepter le pré-rendu en mode server
Titre de la section Accepter le pré-rendu en mode serverPour une application dont le rendu est principalement effectué par le serveur et configuré comme output: server
, ajoutez export const prerender = true
à n’importe quelle page ou route pour pré-rendre une page statique ou un point de terminaison :
Désactiver le pré-rendu en mode hybrid
Titre de la section Désactiver le pré-rendu en mode hybridPour un site principalement statique configuré en mode output: hybrid
, ajoutez export const prerender = false
à tous les fichiers qui doivent être rendus par le serveur à la demande :
Fonctionnalités de rendu à la demande
Titre de la section Fonctionnalités de rendu à la demandeStreaming HTML
Titre de la section Streaming HTMLAvec le streaming HTML, un document est divisé en morceaux, envoyé sur le réseau dans l’ordre, et rendu sur la page dans cet ordre. En mode server
ou hybrid
, Astro utilise le streaming HTML pour envoyer chaque composant au navigateur au fur et à mesure qu’il les rend. Cela permet à l’utilisateur de voir votre HTML aussi rapidement que possible, bien que les conditions du réseau puissent ralentir le téléchargement de documents volumineux et que l’attente des données puisse bloquer le rendu de la page.
Les fonctionnalités qui modifient les en-têtes de réponse ne sont disponibles qu’au niveau de la page (vous ne pouvez pas les utiliser à l’intérieur des composants, y compris les composants de mise en page). Lorsque Astro exécute le code de votre composant, il a déjà envoyé les en-têtes de réponse et ceux-ci ne peuvent pas être modifiés.
Cookies
Titre de la section CookiesDans les modes server
et hybrid
, une page ou un point de terminaison de l’API peut vérifier, définir, obtenir et supprimer des cookies.
L’exemple ci-dessous met à jour la valeur d’un cookie pour un compteur de pages vues :
Voir plus de détails sur Astro.cookies
et le type AstroCookie
dans la référence de l’API.
Response
Titre de la section ResponseAstro.response
est un objet ResponseInit
standard. Il peut être utilisé pour définir l’état de la réponse et les en-têtes.
L’exemple ci-dessous définit un état de réponse et un texte d’état pour une page de liste de produits lorsque le produit n’existe pas :
Astro.response.headers
Titre de la section Astro.response.headersVous pouvez définir des en-têtes en utilisant l’objet Astro.response.headers
:
Renvoyer un objet Response
.
Titre de la section Renvoyer un objet Response.Vous pouvez également renvoyer un objet Response directement à partir de n’importe quelle page en utilisant l’affichage à la demande soit manuellement ou avec Astro.redirect
.
L’exemple ci-dessous recherche un identifiant dans la base de données sur une page dynamique et soit il renvoie une erreur 404 quand le produit n’existe pas, soit il redirige l’utilisateur vers une autre page lorsque le produit n’est plus disponible, soit il affiche le produit :
Request
Titre de la section RequestAstro.request
est un objet Request standard. Il peut être utilisé pour obtenir l’url
, les headers
, la method
, et même le corps de la requête.
En mode server
et hybrid
, vous pouvez accéder à des informations supplémentaires à partir de cet objet pour les pages qui ne sont pas générées statiquement.
Astro.request.headers
Titre de la section Astro.request.headersLes en-têtes de la requête sont disponibles dans Astro.request.headers
. Cela fonctionne comme la propriété Request.headers
du navigateur. Il s’agit d’un objet Headers dans lequel vous pouvez récupérer des en-têtes tels que le cookie.
Astro.request.method
Titre de la section Astro.request.methodLa méthode HTTP utilisée dans la requête est disponible sous la forme Astro.request.method
. Cela fonctionne comme la méthode Request.method
du navigateur. Elle renvoie la représentation sous forme de chaîne de la méthode HTTP utilisée dans la requête.
Voir plus de détails à propos de Astro.request
dans la référence de l’API.
Points de terminaison du serveur
Titre de la section Points de terminaison du serveurUn point de terminaison serveur, également connu sous le nom de route API, est une fonction spéciale exportée à partir d’un fichier .js
ou .ts
dans le dossier src/pages/
. Une caractéristique puissante du rendu à la demande côté serveur, les routes API sont capables d’exécuter du code en toute sécurité sur le serveur.
La fonction prend un contexte de point de terminaison et renvoie une réponse.
Pour en savoir plus, consultez notre Guide des points de terminaison.
Learn