Node.js servir plusieurs fichiers en une seule demande

Est-il possible de servir plusieurs fichiers en une seule demande?

Voici une version simplifiée de mon code pour servir la page d’accueil de notre site Web sur une demande adressée à notre serveur node.js qui ne contient aucun paramètre (il existe un code de mise en cache qui met en cache les données du fichier pour rendre le serveur plus efficace, gère les erreurs, etc. :

var http = require("http"); http.createServer(function(req, res){ res.setHeader("Access-Control-Allow-Origin", "*"); if (req.url == "/"){ res.writeHead(200, {"Content-Type": "text/html"}); fs.readFile("./pages/index/index.html", function(err, data){ res.end(data); }); } else if (req.url == "/index.css"){ res.writeHead(200, {"Content-Type": "text/css"}); fs.readFile("./pages/index/index.css", function(err, data){ res.end(data); }); } else if (req.url == "/index.js"){ res.writeHead(200, {"Content-Type": "application/javascript"}); fs.readFile("./pages/index/index.js", function(err, data){ res.end(data); }); } else if (req.url == "/indexBackground.jpg"){ res.writeHead(200, {"Content-Type": "image/jpeg"}); fs.readFile("./pages/index/images/background.jpg", function(err, data){ res.end(data); }); } }).listen(port); 

Le fichier html lui-même importe des bibliothèques externes à l’aide de CDN. Les références à la feuille de style, au script et à l’image se présentent ainsi:

    

La page est servie correctement mais 3 demandes distinctes doivent être faites pour pouvoir servir la page. J’imagine que cela ralentit le chargement du site Web et ajoute une charge inutile au serveur.

Est-il possible de servir les 3 fichiers en une seule demande malgré le fait qu’ils ont différents types de contenu? Dans ce cas, comment référencer ces fichiers tous servis dans une requête dans le fichier HTML? Sinon, existe-t-il une méthode plus efficace pour servir la page que celle que nous utilisons actuellement?

    S’il s’agit d’une seule page, vous pouvez simplement les mettre dans des balises de script et de style, les images peuvent être placées dans des URL de données et vous serez heureux. Si plusieurs fichiers utilisent ces fichiers, il est préférable de laisser le navigateur les récupérer et les mettre en cache.

    Je pense qu’il y avait un protocole (http2?) Où le serveur peut envoyer des fichiers supplémentaires que le navigateur demandera quand même. Mais je n’ai aucune idée de comment s’appelait la technologie.

    Bonne chance, question intéressante!

    Téléchargez-vous les fichiers ou les affichez-vous dans le navigateur? SI vous les rendez dans le navigateur, il est plus logique que le navigateur puisse faire plusieurs demandes simultanées de ressources pour optimiser la bande passante plutôt que de faire une seule demande de blocage. 3 demandes distinctes au CDN seraient en parallèle et cela serait plus rapide.