Les navigateurs modernes ont une implémentation de HTTP Protocol idéalement proche de la norme, même pour les serveurs proxy que vous devriez prendre en compte si vous voulez avoir un effet sur le trafic de l'utilisateur et non intentionnellement. Le version is 1.1 actuel, quelques extraits:
10,4 Erreur client 4xx
La classe 4xx du code d'état est destiné aux cas où le client semble avoir commis une erreur. Sauf lorsqu'il répond à une demande HEAD, le serveur DEVRAIT inclure une entité contenant une explication de la situation d'erreur, et s'il s'agit d'une condition temporaire ou permanente. Ces codes d'état sont applicables à n'importe quelle méthode de requête. Les agents utilisateurs DEVRAIENT afficher toute entité incluse à l'utilisateur. Si le client envoie des données, une implémentation de serveur utilisant TCP DEVRAIT veiller à ce que le client accuse réception du ou des paquets contenant la réponse, avant que le serveur ne ferme la connexion d'entrée. Si le client continue d'envoyer des données au serveur après la fermeture, la pile TCP du serveur envoie un paquet de réinitialisation au client, ce qui peut effacer les tampons d'entrée non acquittés du client avant qu'ils puissent être lus et interprétés par l'application HTTP.
Plus spécifiquement pour 404:
10.4.5 404 Introuvable
Le serveur n'a rien trouvé correspondant à la demande-URI. Aucune indication n'est donnée quant à savoir si la condition est temporaire ou permanente. Le code d'état 410 (Gone) DEVRAIT être utilisé si le serveur sait, grâce à un mécanisme interne configurable, qu'une ancienne ressource est définitivement indisponible et n'a pas d'adresse de transfert. Ce code d'état est généralement utilisé lorsque le serveur ne souhaite pas révéler exactement pourquoi la demande a été refusée ou lorsqu'aucune autre réponse n'est applicable.
Tellement pour le code de réponse 404.
Vous avez demandé:
maintenant [nous] se demandent si les ressources que nous sommes certains ne sont pas valides, devrions-nous envoyer des en-têtes de cache appropriés?
Vous n'avez pas donné d'en-têtes de cache spécifiques que vous aimeriez utiliser, il est donc un peu imprécis de répondre à votre question. La mise en cache est une section de la spécification de protocole: 13 Caching in HTTP.
En général, les éléments suivants doivent être ce que vous cherchez, extrait de 13.1.1 Cache Correctness:
Une cache correcte doit répondre à une demande avec la réponse la plus mise à jour détenu par le cache approprié à la demande (voir les sections 13.2.5, 13.2.6, et 13.12) qui remplit l'une des conditions suivantes:
...
3. It is an appropriate 304 (Not Modified), 305 (Proxy Redirect),
or error (4xx or 5xx) response message.
Vous pouvez donc mettre en cache 404 messages de réponse et les signaler au cache. Les proxies et les clients devraient le gérer.
Veuillez nommer les en-têtes de cache que vous avez définis et comment. – hakre