Les développeurs discutent fréquemment des sites Web "statiques" par rapport "dynamique", et le terme Jamstack est également couramment utilisé. Que signifient ces termes et où se trouve la ligne de division entre un site "statique" et un site Jamstack ou Dynamic? Ces questions apparemment simples ont des réponses nuancées. Plongeons ces concepts pour mieux comprendre Jamstack.
Considérez la différence entre une chaise et un tabouret. La plupart diraient qu'une chaise a quatre jambes et un dos, tandis qu'un tabouret a trois jambes et pas de dos.
Mais qu'en est-il des conceptions qui brouillent les lignes?
Plus un tabouret de chaise devient plus chaise, moins la distinction est claire. Finalement, la plupart conviendraient que c'est un tabouret, pas une chaise. Cet exercice apparemment trivial met en évidence l'importance de définir les limites. Il nous aide à comprendre les limites et les zones grises. En fin de compte, même les défenseurs de chaise fidèles concéderaient un point où l'objet est clairement un tabouret.
Bien que les chaises soient intéressantes, cet article se concentre sur la technologie de livraison du site Web. Appliquons le même exercice aux sites Web statiques, dynamiques et JAMSTACK.
Lorsque vous accédez à un site Web, plusieurs processus en coulisses se produisent:
Surtout, la réponse du serveur Web à chaque demande est toujours un fichier statique, même sur un site Web dynamique. Ces fichiers peuvent être enregistrés ou partagés comme n'importe quel autre fichier.
La différence entre les sites Web statiques et dynamiques réside dans ce que fait le serveur Web . Dans un site statique, les fichiers demandés existent déjà; Le serveur les renvoie simplement. Dans un site dynamique, le logiciel génère la réponse. Cela peut impliquer des requêtes de base de données, un traitement de modèle ou l'ajout de horodatages. Cette génération se produit pour chaque demande.
Il s'agit de la distinction fondamentale entre les sites Web statiques et dynamiques.
Les sites Web statiques ont des limites. Bien qu'ils soient excellents pour les sites d'information, ils manquent de contenu ou de comportement dynamique intrinsèquement. Jamstack comble l'écart entre statique et dynamique. Il tire parti des avantages des sites statiques tout en permettant une fonctionnalité dynamique si nécessaire.
La "pile" à Jamstack est un terme impropre. Ce n'est pas une pile mais une philosophie similaire aux 5 piliers du cadre bien architecté AWS. Cette ambiguïté a suscité beaucoup de discussions sur sa signification.
Jamstack est un superset de sites statiques. Pour le comprendre, examinons ses origines.
En 2002, le blog d'Aaron Swartz "Bake, Don't Fry" a souligné les avantages des sites Web statiques, ce qui remet en question les limitations perçues. Il a souligné les avantages de la maintenance plus simple, des sauvegardes plus faciles et de l'indépendance de la plate-forme.
Tout au long de l'histoire, des frustrations similaires ont alimenté le développement des technologies liées à Jamstack:
Les thèmes récurrents dans les premiers outils de Jamstack comprennent une complexité réduite, des performances améliorées, un verrouillage réduit des fournisseurs et de meilleurs flux de travail des développeurs.
Au cours des deux dernières décennies, l'évolution de JavaScript et la montée des microservices ont créé une nouvelle approche: le découplage des fins frontales statiques à partir de back-end dynamiques.
En 2015, Mathias Biilmann a inventé "Jamstack" pour décrire cette approche moderne, surmontant les limites du terme "site Web statique". Cela a revitalisé les technologies statiques plus anciennes et les a poussées à de nouvelles limites. Les avantages de l'approche Jamstack ont conduit à sa croissance rapide.
Treize ans avant Jamstack, Aaron Swartz a plaidé pour séparer les entrées (nécessitant un traitement dynamique) de la sortie (qui peut être prélevée). Ce découplage du front-end et du back-end, avec un pré-rendu dans la mesure du possible et une fonctionnalité dynamique superposée au besoin, est l'essence de Jamstack.
Les avantages de Jamstack sur les sites dynamiques proviennent de ses six piliers:
Moins de pièces mobiles réduisent la surface d'attaque.
Le contenu statique évolue facilement via les CDN.
La livraison CDN améliore considérablement la vitesse de chargement des pages.
Les sites Web statiques sont intrinsèquement plus simples à maintenir.
Les sites statiques sont facilement transférables entre les serveurs.
Intégration transparente avec les workflows GIT.
La comparaison par Chris de Jamstack et WordPress, et de son analyse dans "Statique ou non?", Explorez plus en détail ces points.
Utilisons ces piliers pour évaluer les cas d'utilisation de Jamstack.
Ayant établi les bases, examinons les limites de chaque définition. Nous classerons les cas Edge en quatre groupes:
De nombreux cas peuvent tomber dans plusieurs catégories; Nous utiliserons la classification la plus restrictive.
Un site statique avec un diaporama d'image alimenté par JavaScript reste statique; Toutes les interactions se produisent dans le navigateur.
Un site statique ajoutant une bannière basée sur des cookies reste statique.
Le chargement d'images ou JavaScript d'une source externe dynamique est généralement considéré comme statique, bien que strictement parlant, ce n'est pas le cas.
L'intégration du contenu via des iframes (par exemple, Google Maps) est généralement considérée comme statique, malgré la nature dynamique du contenu intégré.
Les formulaires sur les sites statiques deviennent dynamiques lorsque la soumission des données nécessite un back-end. La distinction dépend de la question de savoir si le service de soumission de formulaire est considéré comme une partie fondamentale du site Web.
Les demandes d'Ajax, en particulier aux back-end dynamiques, poussent le site au-delà du statique dans le territoire de Jamstack.
Les services permettant le commerce électronique sur les sites statiques utilisent généralement des demandes AJAX, les plaçant dans la catégorie Jamstack.
Les spas, en s'appuyant fortement sur l'Ajax, sont intrinsèquement dynamiques et Jamstack.
Le type de back-end (sans serveur, Kubernetes, PHP) est moins important que le découplage du front-end et du back-end; C'est Jamstack.
Un proxy inversé ne fait pas intrinsèquement une dynamique de site statique, tant que le fichier reste inchangé.
Un CDN, agissant comme un indicateur inverse, ne modifie pas la nature statique du site.
Un CDN devant un site dynamique, même avec un long cache, reste dynamique en raison de la génération initiale à la demande et de l'invalidation potentielle du cache.
L'utilisation d'outils comme WP2Static pour générer une sortie statique à partir de WordPress crée un site Web statique.
Les fonctions de bord peuvent ajouter des en-têtes (statiques) ou manipuler HTML (dynamique), brouillant les lignes. Une manipulation HTML étendue le pousse dans le domaine dynamique.
DPR, tout en améliorant les workflows de Jamstack, est essentiellement dynamique en raison de la génération de pages à la demande.
Semblable à DPR, la génération de pages à la demande d'ISR la classe comme dynamique.
CMSS de fichiers plats, tout en éliminant les bases de données, rendent toujours dynamiquement les réponses.
L'examen de ces cas de bord clarifie les limites de la statique et du jamstack. L'objectif n'est pas l'adhésion dogmatique mais la compréhension des compromis. Un site Web pourrait être principalement JAMSTACK avec des éléments dynamiques; C'est parfaitement acceptable. Plus statique est proche, meilleure est la performance, la sécurité et l'évolutivité. Cette discussion est en cours et la compréhension des compromis est la clé.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!