2009-10-22 5 views
27

J'ai lu RFC 2616, mais je me demande toujours à quoi sert le champ Date. Il y a le champ Last-Modified, qui a en réalité une signification en plus de simplement servir les métadonnées, c'est-à-dire, pour la mise en cache ('If-Modified-Since').Quelle est la logique de l'en-tête HTTP Date?

Mais à quoi cela sert-il de doubler l'information dans un en-tête Date distinct?

Répondre

31

Par the spec, il est utilisé dans les calculs d'âge. Si vous ne savez pas à quelle heure le serveur pense, vous ne pourrez pas calculer l'âge d'une ressource. Voici le texte pertinent de la spécification:

Résumé de l'algorithme de calcul de l'âge, lorsqu'un cache reçoit une réponse:

age_value
est la valeur de l'âge: en-tête reçu par le cache avec cette réponse.

date_value
est la valeur de l'en-tête du serveur d'origine Date:

request_time
est le temps (local) lorsque le cache a fait la demande qui a abouti à cette réponse en cache

response_time
est le (local) alors que le cache a reçu la réponse

now
est l'heure (locale)

apparent_age = max(0, response_time - date_value); 
corrected_received_age = max(apparent_age, age_value); 
response_delay = response_time - request_time; 
corrected_initial_age = corrected_received_age + response_delay; 
resident_time = now - response_time; 
current_age = corrected_initial_age + resident_time; 
+0

Ah, OK. Alors la date n'est pas nécessairement la même que la dernière modification? Si je comprends bien, c'est plus "Quand est-ce que le serveur a commencé à envoyer les choses?". Cela aurait du sens ... – Boldewyn

+0

@Boldewyn c'est exact - c'est "la date et l'heure à laquelle le ** message ** a été créé". –

+0

@DanielLubarov ne vaut rien que ce n'est pas seulement la réponse qui peut envoyer un en-tête Date. Il est également pris en charge pour les demandes, où il serait utile d'établir l'heure sur le client. Malheureusement, ce n'est généralement pas défini de ce que je peux voir –

Questions connexes