Le contexte
En tant que développeur indépendant, j'ai souvent créé des sites Web entièrement basés sur XSLT. En d'autres termes, à chaque demande, un fichier XML est généré, contenant tout ce que nous devons savoir sur le contenu de la page: le nom de l'utilisateur actuellement connecté, les entrées du menu supérieur, si ce menu est dynamique / configurable, le texte à afficher dans une zone spécifique de la page, etc. Ensuite, XSL le traite (caches, etc.) vers la page HTML / XHTML pour l'envoyer au navigateur.
Il a un bon point pour faciliter la création de sites Web à petite échelle, en particulier avec PHP. C'est une sorte de moteur de modèle, mais que je préfère aux autres moteurs de modèle parce qu'il est beaucoup plus puissant que la plupart des moteurs de modèle, et parce que je le connais mieux et j'aime ça. Il est également possible, en cas de besoin, de donner accès à des données XML brutes à la demande pour un accès automatisé, sans avoir besoin de créer des API distinctes.
Bien sûr, il échouera complètement sur n'importe quel site Web à moyenne ou grande échelle, car, même avec de bonnes techniques de mise en cache, XSL dégrade toujours les performances globales du site Web et nécessite plus de CPU côté serveur.
Question
Les navigateurs modernes ont la possibilité de prendre un fichier XML et de le transformer avec un fichier XSL associé déclaré en XML comme <?xml-stylesheet href="demo.xslt" type="text/xsl"?>
. Firefox 3 peut le faire. Internet Explorer 8 peut également le faire.
Cela signifie qu'il est possible de migrer le traitement XSL du serveur vers le côté client pour 50% des utilisateurs (selon les statistiques du navigateur sur plusieurs sites Web sur lesquels je souhaiterais implémenter cela). Cela signifie que ces 50% d'utilisateurs ne recevront que le fichier XML à chaque demande, réduisant ainsi leur bande passante et celle du serveur (le fichier XML étant beaucoup plus court que son analogue HTML traité), et réduisant l'utilisation du processeur du serveur.
Quels sont les inconvénients de cette technique?
J'en ai pensé à plusieurs, mais cela ne s'applique pas dans cette situation:
- Implémentation difficile et nécessité de choisir, en fonction de la demande du navigateur, quand envoyer du XML brut et quand le transformer en HTML à la place. De toute évidence, le système ne sera pas beaucoup plus difficile que le système actuel. La seule modification à apporter consiste à ajouter un lien de fichier XSL à chaque XML et à ajouter une vérification de navigateur.
- Plus d'ES et d'utilisation de la bande passante, car le fichier XSLT sera téléchargé par les navigateurs, au lieu d'être mis en cache par le serveur. Je ne pense pas que ce sera un problème, car le fichier XSLT sera mis en cache par les navigateurs (comme les images, ou CSS, ou les fichiers JavaScript sont effectivement mis en cache).
- Peut-être quelques problèmes côté client, comme peut-être des problèmes lors de l'enregistrement d'une page dans certains navigateurs.
- Difficulté à déboguer le code: il est impossible d'obtenir une source HTML que le navigateur utilise réellement, car la seule source affichée est le XML téléchargé. En revanche, je vais rarement regarder le code HTML côté client, et dans la plupart des cas, il est directement inutilisable (les espaces sont supprimés).
ngx_http_xslt_module
ou les quatre). Je doute fortement que la prise en charge côté client de XSLT 2.0 soit meilleure.