2009-11-23 5 views
0

J'essaye d'établir l'algorithme pour indiquer si les fichiers non-binaires sur le Web ont changé ou pas. J'allais avec:comment savoir quand une page web HTTP a changé quand elle est de type html/text?

  • datetime LastModified d'en-tête, et si ceux-ci ne sont pas présents à fallback
  • ContentLength d'en-tête

Je trouve cependant que pour beaucoup de sites Web Le LastModified pour les pages HTML utilise en fait le DateTime actuel, donc l'approche ne fonctionne pas (c'est-à-dire conduirait à une indication que la page change toujours) je pense ...?

Qu'est-ce qu'un bon algorithme alors? Que diriez-vous?

IF response.ContentType.StartsWith("text/html") <== or should this just be "text" 
    THEN: 
    Check based on comparing text content before & after 
    ELSE: 
    IF LastModified dates are OK 
     Compare based on LastModified dates 
    ELSE 
     Compare based on ContentLength 

grâce

Répondre

2

envoi de la demande, préciser If-Modified-Since http. Ensuite, il appartient au serveur de répondre soit avec un nouveau code html, soit avec le contenu 304 non modifié.

+0

Est-ce à la fois pour le texte (p. Ex. Les pages d'accueil du site Web) et les fichiers binaires? – Greg

+0

Est-ce que la plupart des sites Web/serveurs Web y adhèrent en général? – Greg

+0

Oui, cela fonctionne pour http, binaire et autres types MIME. –

0

L'en-tête de réponse ETag est un bon indicateur de ceci, s'il est présent. Utilisez les requêtes avec If-None-Match (ou seulement les requêtes HEAD) pour les voir.

Questions connexes