51 votes

Réponse HTTP avant demande

Ma question peut paraître stupide, mais je voulais juste être sûr:

  • Est-il possible d'envoyer une réponse HTTP, avant d'avoir la demande pour cette ressource?

Disons par exemple que vous avez une page HTML index.html qui montre qu'une image appelée img.jpg. Maintenant, si votre serveur sait qu'un visiteur demande le fichier HTML et l'image jpg à chaque fois:

Serait-il possible pour le serveur pour envoyer l'image juste après le fichier HTML pour gagner du temps?

Je sais que HTTP est un protocole synchrone, donc, en théorie, il ne devrait pas travailler, mais je voulais juste quelqu'un pour confirmer (ou pas).

23voto

nha Points 898

Un récent post par Jacques Mattheij, le référencement de votre question, affirme que, malgré HTTP a été conçu comme un protocole synchrone, la mise en œuvre n'a pas été. Dans la pratique, le navigateur (il ne précise pas laquelle exactement) accepte des réponses à des demandes n'ont pas été encore envoyés.

D'autre part, si vous êtes à la recherche de quelque chose de moins hacky, vous pourriez avoir un coup d'oeil à :

  • pousser des techniques qui permet au serveur d'envoyer du contenu du navigateur. Le moderne, la mise en œuvre de remplacer le long-polling/Comet "hacks" sont les websockets. Vous voudrez peut-être avoir un coup d'oeil à douille.oi aussi.
  • Sinon, vous voudrez peut-être avoir un coup d'oeil à côté client de routage. Certaines implémentations de combiner cela avec des techniques de mise en cache (comme dans derby.js je crois).

15voto

Raymond Hettinger Points 50330

Si quelqu'un demande de l' /index.html et vous envoyez des deux réponses (une pour /index.html et l'autre pour /img.jpg), comment savez-vous que le destinataire recevra les deux réponses et de savoir quoi faire avec eux avant la seconde demande?

Le problème n'est pas vraiment avec l'envoi. Le problème est avec le récepteur, éventuellement, de se inattendu de données.

Un autre problème est que vous êtes peut nier le client de la possibilité d'utiliser la mise en cache HTTP outils comme Si-Modified-since et Si-None-Match (par exemple, le client pourrait ne pas vouloir /img.jpg à être envoyé, car il a déjà une copie mise en cache).

Cela dit, vous pouvez vous rapprocher de l'server-push avantages en utilisant la Comète techniques. Mais qui est beaucoup plus que de simplement anticiper les requêtes HTTP entrantes.

2voto

Tim Medora Points 30969

Vous obtiendrez un meilleur résultat en cache les ressources de façon efficace, c'est à dire le réglage approprié en-têtes de cache et de la configuration de votre serveur web pour la mise en cache. Vous pouvez également inclure d'images à l'aide de codage en base 64, si c'est un problème spécifique.

Vous pouvez aussi regarder le temps d'interrogation javascript solutions.

1voto

Femi Points 42054

Vous recherchez un serveur push : il n'est pas disponible en HTTP. Les protocoles comme SPDY l’ont, mais vous n’avez pas de chance si vous êtes limité à HTTP.

1voto

MaciekTalaska Points 1076

Je ne pense pas que c’est possible de mélanger .html et image dans cette même réponse HTTP. En ce qui concerne l’envoi des données d’image « immédiatement », juste après la première demande - il y a une notion de « ressources statiques », qui pourrait être utile (mais il faudra le client pour créer une nouvelle demande pour une ressource spécifique).

Il y a deux ou trois choses intéressantes mentionnées dans le l' article.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X