Pourquoi les fichiers statiques sont-ils servis séparément dans les serveurs Web?

Il semble que la plupart des serveurs Web (Apache, Nginx, Lighthttpd) servent des fichiers statiques séparément des fichiers HTML (configuration différente). Pourquoi est-ce?

J’essaie de déployer mon application Django avec Apache et le déploiement a été simple jusqu’à présent. En développement, le serveur Django a servi des fichiers statiques sans que je me soucie de le configurer. Pourquoi est-ce différent dans les serveurs Web réels?

C’est un problème de performance.

Dans une configuration de production, vous ne souhaitez pas que le contenu statique soit diffusé via django. Servir du contenu statique via django implique beaucoup de surcharge (chargement du fichier statique, traitement de python bytecode, passage par WSGI, etc.) totalement inutile pour le contenu statique.

Les serveurs Web sont extrêmement rapides et efficaces pour servir eux-mêmes du contenu statique. Il n’y a donc généralement aucune raison d’impliquer django / python dans la requête.

Pour un petit site sans grande charge, vous pourriez avoir un contenu statique de django serve (vous devriez configurer django pour servir du contenu statique avec DEBUG=False ) et ce serait relativement inoffensif, mais ce ne serait pas la bonne façon ‘ pour le faire.