AdWz WP-Plugin 12 – 304 Not Modified

(AdWz; Auf dem Weg zum) WP-Plugin 12 – 304 Not Modified

Das Plugin mg404rewrite läuft seit einigen Monaten stabil in diesem Blog und wurde in der einen oder anderen WordPress-Installation mit aufgenommen. Grund genug sich die ToDo-Liste anzusehen. „Conditional Gets“ und „HTTP-Post“ werden durch das Plugin noch nicht verarbeitet. Dieser Teil der Artikelserie „AdWz …“ setzt sich mit dem Thema „Conditonal Gets“ auseinander.

„Conditional Gets“ werden u.a. für sogenannte Feeds benötigt. WordPress, andere Blogs und viele Quellen im weltweitem Netz bieten einen Newsfeed an.

Feed Icon

Feed oder Newsfeed (RSS oder Atom) ist ein elektronisches Nachrichtenformat, das dem Nutzer ermöglicht, über Inhalte einer Website, Änderungen daran oder Nachrichten in gegebenenfalls zusammengefasster Form auf dem Laufenden zu bleiben.

Dazu werden sie als sogenannte RSS-Feeds abonniert. RSS ist ein Service, der ähnlich einem Nachrichtenticker die Überschriften mit einem kurzen Textanriss und einen Link zur Originalseite enthält. Der Abonnent des RSS-Feed kann direkt den angebotenen Links folgen und dort die vollständige Meldung lesen. Zum Lesen eines RSS-Feeds dienen herkömmliche Webbrowser oder spezielle Programme, die auf die Ähnlichkeit zum Nachrichtenticker angepasst sind. Letztere nennt man (synonym) RSS-Aggregatoren, RSS-Reader oder Feedreader.

Durch Eingabe der Adresse des Feeds im entsprechenden Feedreader wird dieser „abonniert“. Neu veröffentlichte Inhalte werden dann vom Feedreader selbsttätig in regelmäßigen, vom Empfänger festgelegten Abständen auf die Endgeräte – PCs oder auch Mobiltelefone, PDAs oder mobile Spieleplattformen – der Abonnenten geladen. Dadurch erhalten diese die aktuellen Informationen automatisch. Es ist nicht mehr notwendig, selbst die Webseiten zu besuchen, um nach Änderungen zu schauen. Das vereinfacht insbesondere die Beobachtung einer großen Menge von Quellen wie z. B. Blogs, in denen es nicht unbedingt regelmäßig zu Änderungen kommt, deren Aktualisierung man aber nicht verpassen möchte. Im Unterschied zur Benachrichtigung per E-Mail geht die Initiative bei RSS vom Empfänger aus, der den Feed abonniert hat.

Die bedingten Anfragen („Conditional Gets“) ermöglichen die Anfrage der Aktualität der Nachrichten, bevor der gesamte Feed geladen werden muss. Dadurch wird der Datenverkehr zwischen entferntem Server und dem Empfänger reduziert. Zusätzlich wird der Webserver entlastet, da der Feed nur generiert werden muss, wenn der Empfänger aktuellere Nachrichten anfordert.

Die Analyse habe ich mit dynamische Lesezeichen im Firefox und der Firefox-Erweiterung „Live HTTP Headers“ durchgeführt.

1. Dynamisches Lesezeichen „Kommentare fuer mgBlog“ angelegt.

http://mgsimon.de/comments/feed/
 
GET /comments/feed/ HTTP/1.1
Host: blog.mgsimon.de
...
HTTP/1.x 200 OK
...

2. Dynamisches Lesezeichen aktualisieren.

http://mgsimon.de/comments/feed/
 
GET /comments/feed/ HTTP/1.1
Host: blog.mgsimon.de
...
If-Modified-Since: Fri, 15 Feb 2008 12:24:59 GMT
If-None-Match: "54d9a49f036b8357cf01ac034fa84c2d"
...
HTTP/1.x 304 Not Modified
...

3. Kommentar erstellen und dynamische Lesezeichen aktualisieren.

http://mgsimon.de/comments/feed/
 
GET /comments/feed/ HTTP/1.1
Host: blog.mgsimon.de
...
If-Modified-Since: Fri, 15 Feb 2008 12:24:59 GMT
If-None-Match: "54d9a49f036b8357cf01ac034fa84c2d"
...
HTTP/1.x 200 OK
Date: Fri, 15 Feb 2008 17:09:58 GMT
...

Der Test zeigt eine funktionsfähige bedingte Anfrage. Im ersten Schritt wird der Feed abonniert und vollständig geladen. Anschliessend werden im zweiten Schritt aktuellere Informationen angefordert. Die Kommentare sind unverändert und die Anfrage wird richtig mit 304 Not Modified beantwortet. Der Nachrichtenkanal muss nicht geladen werden. Der letzte Versuch fragt erneugt nach aktuellere Informationen als die lokal vorhandenen an. Dieser wird mit 200 OK beantwortet, da die angeforderten Informationen neuer als die lokalen sind. Ein Kommentar wurde hinzugefügt und der Feed wird geladen.

Wie der Test zeigt verarbeitet das Plugin „mg404rewrite“ bedingte Anfragen richtig. Der Punkt „Conditional Gets“ funktioniert auch ohne weitere Anpassungen und kann von der ToDo-Liste gestrichen werden. :-)

Tags: , ,

Hinterlasse eine Antwort