8795 sujets

Développement web côté serveur, CMS

Bonjour,

Petite question sur les pages d'erreur 404 personnalisées.
Dans le cas où l'utilisateur saisit une URL qui n'aboutit à rien, il obtient logiquement cette page.

Maintenant si l'utilisateur est sur une page existante mais qui contient une dizaine d'images qui n'existent pas, il va obtenir un 404 Not Found sur chacune des requêtes pour les images, mais est-ce qu'il aura également à télécharger 10 fois le contenu de la page d'erreur personnalisée pour rien ?
Logiquement, le navigateur récupère une erreur 404 pour les images posant problème et affiche seulement le texte alternatif (il ne télécharge pas la page d'erreur pour une image qui manque dans une page).
Julien Falque a écrit :
Donc il reçoit bien le header 404 Not Found mais pas le contenu qui va avec ?

Il me semble qu'il reçoit bien les deux, header et contenu.
Il demande un fichier, par exemple /img/test.png, et le serveur répond.
- Si l'image existe, le serveur renvoie un HTTP 200, Content-Type: image/png, avec en contenu l'image elle-même.
- Si l'image n'existe pas, le serveur renvoie un HTTP 404, Content-Type: text/html, avec en contenu la page d'erreur 404 (celle du serveur ou la page personnalisée).

C'est un peu plus lourd que si le serveur renvoyait un header 404 et une réponse vide, mais je ne suis pas sûr que ça ait la moindre incidence sur les performances (notamment parce qu'il y a une taille par défaut des packets TCP, dans les 1500 octets je crois).
Il reçoit tout mais pas 10 fois si tu as 10 images identiques sur la même page. Il essaie seulement la première fois, si les URL sont les mêmes.

Par contre il y a moyen de ne pas envoyer le contenu HTML de la page 404 et don calléger un peu, dans le cas où cette page est réclamée pour une image. Techniquement il suffirait de regarder le champ accept des en-têtes HTTP.... j'ai pas testé mais ça devrait marcher.