Question

Comment obtenir la date de création ou la taille d'un fichier, par exemple, ce Hello.jpg à http://www.mywebsite.com/now/Hello.jpg (remarque : cette URL n’existe pas). Le but de cette question est de permettre à mon application de télécharger à nouveau les fichiers à partir de n’importe quel site Web. il a détecté une version mise à jour des fichiers sur le site Web et les fichiers de mon dossier local sont obsolètes. Des idées?

Était-ce utile?

La solution

Si vous utilisez la requête HEAD, elle enverra les en-têtes de la ressource. Vous pourrez alors vérifier les en-têtes de contrôle du cache qui vous indiqueront si la ressource a été modifiée, l'heure de la dernière modification, la taille (longueur du contenu) et la date.

$ telnet www.google.com 80
Trying 216.239.59.103...
Connected to www.l.google.com.
Escape character is '^]'.
HEAD /intl/en_ALL/images/logo.gif HTTP/1.0

HTTP/1.0 200 OK
Content-Type: image/gif
Last-Modified: Wed, 07 Jun 2006 19:38:24 GMT
Expires: Sun, 17 Jan 2038 19:14:07 GMT
Cache-Control: public
Date: Tue, 16 Sep 2008 09:45:42 GMT
Server: gws
Content-Length: 8558
Connection: Close

Connection closed by foreign host.

Notez que vous devrez probablement décorer cette approche simple et de base avec de nombreuses heuristiques dépendant de la folie de l’administrateur de chaque serveur Web, car chacun peut envoyer les en-têtes de son choix. S'ils ne fournissent pas d'en-têtes de mise en cache (Last-Modified, Expires, Cache-Control), ni Content-Length, ni etag, vous seriez obligé de les télécharger à nouveau pour les tester.

Autres conseils

Le serveur Web peut envoyer un en-tête de dernière modification et / ou etag à cette fin. Et vous pourriez envoyer un en-tête if-modified-since dans votre requête.

voir http://www.w3.org/Protocols/rfc2616/ rfc2616-sec14.html sections 14.19, 14.25 et 14.29

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top