Wie einen http-Datei-Metadaten zu bekommen?
-
09-06-2019 - |
Frage
Wie eine Datei Erstellungsdatum oder Dateigröße zu erhalten, zum Beispiel dieses hello.jpg unter http://www.mywebsite.com/now/Hello.jpg (beachten Sie : Diese URL existiert nicht) dieser Frage Zweck meiner Anwendung neu laden Sie die Dateien von der jede Website zu machen ist, wenn? es hat festgestellt, dass die Website eine aktualisierte Version der Dateien hat und die Dateien in meinem lokalen Ordner nicht mehr aktuell sind. Irgendwelche Ideen?
Lösung
Wenn Sie die HEAD-Anfrage verwenden, wird es die Header für die Ressource senden, dort können Sie die Cache-Control-Header überprüfen, die Ihnen sagen, wenn die Ressource geändert wurde, Zeitpunkt der letzten Änderung, Größe (Content-Length) und Datum.
$ 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.
Beachten Sie, dass Sie wahrscheinlich diesen grundlegenden und einfachen Ansatz mit vieler Heuristik des Irrsinn eines jeden Web-Server Admin-abhängig dekorieren haben, da jeder, was Header senden kann sie mögen. Wenn sie keine Caching-Header zur Verfügung stellen (Last-Modified, abgelaufen ist, Cache-Control) noch Content-Length noch etag, werden Sie mit redownloading steckt es zu testen.
Andere Tipps
Der Webserver könnte eine der letzten Änderung und / oder etag-Header zu diesem Zweck senden. Und Sie könnten eine if-modified-since Header in Ihre Anfrage senden.
finden Sie unter http://www.w3.org/Protocols/rfc2616/ RFC2616-sec14.html 14.19 Abschnitte, 14.25 und 14.29