Alexander (HH): Webseitenänderungsmelder

Beitrag lesen

Moin Moin!

Der Software auf einem externen Rechner wird nichts anderes übrig bleiben, als regelmäßig nachzusehen. Ich kenne zwar keine, aber falls du selber was machen willst, würd ich mit HEAD das Änderungsdatum auslesen.

Manche Server liefern, bewußt oder unbewußt, auch einen ETag-Header mit, dessen einzige Funktion es ist, eine bestimmte Version der jeweiligen Resource zu kennzeichnen. Ändert sich das ETag, gibt es sehr wahrscheinlich auch eine neue Version der Resource.

Erst wenn kein ETag vorhanden ist, würde ich mich auf Last-Modified und Content-Length-Header zurückziehen.

Es schadet natürlich auch nicht, alle drei Header zu überprüfen. Ich würde das Programm so schreiben, dass es zu jeder abzufragenden URL ETag, Last-Modified und Content-Length speichert und bei Veränderungen auch nur eines der Header den Inhalt neu herunterlädt. Fehlt einer der Header, würde ich stattdessen einen leeren String einsetzen. Ich würde mir nicht die Mühe machen, das Datum zu parsen, sondern es stumpf als String behandeln, und auch das Datum nur auf exakte Gleichheit überprüfen.

Wo man die drei Header-Werte pro URL ablegt, ist natürlich beliebig. Ideen: Eine kleine Datenbank, z.B. SQLite, eine INI-Datei, eine CSV-Datei, oder eine Datei neben der heruntergeladenen Datei (foobar.pdf.meta neben foobar.pdf), die die drei Header stumpf hintereinander geschrieben enthält.

Die INI-Datei hätte den Vorteil, dass man schnell neue Downloads hinzufügen könnte, einfach mit einem Texteditor:

schonmal heruntergeladen:

[http://www.example.com/docs/tr-1012.pdf]
file=/home/dora/docs/tr-1012.pdf
ETag=zguwegfewu982zhd
Content-Lenght=65327
Last-Modified=Sun, 25 Oct 2009 07:48:30 GMT

frisch angelegt - keine Header:

[http://www9.example.org/foo/bar/baz.pdf]
file=/home/dora/docs/foo-bar-baz.pdf

Für die regelmäßige Ausführung des Programms verläßt man sich am besten auf Bordmittel des Betriebssystems, entweder cron auf Unix-artigen, oder "Scheduled Tasks" für Rechner, die unter Windows leiden.

Alexander

--
Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".