Hallo Robert,
zunächst möchte ich Dich auf einige technische Sachen aufmerksam machen, die mir am jetzigen Entwicklungsstand auffallen und bei der Fertigstellung zu einer möglichst optimalen Umsetzung Deines Vorhabens helfen sollen. Du nutzt den Apachen 2.0.53. Daher kannst Du verschiedene Angaben in den meta-Tags konfigurativ begleiten/ersetzen:
<meta name="content-language" content="de">
Hier würde ein übliches Setzen des http://de.selfhtml.org/html/attribute/allgemeine.htm#uebersicht@title=lang-Attributs im Wurzelelement des Dokuments ausreichen.
<meta http-equiv="content-language" content="de">
<meta http-equiv="expires" content="300">
<meta http-equiv="pragma" content="no-cache">
Prinzipiell stellen diese mit http-equiv ausgezeichneten Angaben Informationen für einen Server bereit, diese als HTTP-Header zu senden. Der Apache unterstützt dies aber nicht und leider ist die Interpretation dieser Metaangaben nicht vorgeschrieben zwangsläufig. HTTP-Header dagegen müssen zwangsläufig interpretiert werden.
Es ließe sich also in einer Konfiguration (oder noch besser direkt im Programm newsfocustest.jsp selbst adäquat dazu) zum setzen dieser Header folgendes notieren:
<Files newsfocustest.jsp>
DefaultLanguage de
<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 5 minutes"
</IfModule>
<IfModule mod_headers.c>
Header append Cache-Control no-cache
</IfModule>
</Files>
Die Webseite wird alle 10 Sekunden per JS reloaded um oben ein zufällig ausgewähltes item groß anzuzeigen.
Das RSS XML hole ich alle 5 Minuten auf meinen Server.
Ok.; allerdings verstehe ich nicht ganz, warum Du den Verfall auf 300 Sekunden setzt, wenn Du die Seite alle 10 Sekunden neu laden lässt. Formal müsste ein Browser, wenn er denn <meta http-equiv="expires" content="300">
korrekt interpretieren bzw. sich an einen entsprechenden HTTP-Header Expires halten würde, die Seite trotz reload()
erst nach 5 Minuten anfordern.
Darüber hinaus Macht es absolut keinen Sinn, die Seite komplett neu zu laden. Es werden lediglich 0.2 % Daten verändert. Ein Neuladen bedeutet aber aufgrund der vielen Bilder im vorliegenden Beispiel insgesamt 31 requests und responses. Wegen Deinem Dummusing entstehen auf p3.focus.de alle 10 Sekunden davon 20 unnötige requests. Nimm stattdessen DOM un lege mit einer einfachen Javascript-Random-Funktion das anzuzeigende Thema samt Bild fest! Ob sich auf p3.focus.de etwas getan hat, kannst Du erheblich effizienter mittels Ajax vom Dokument aus erfragen und dieses ggf. anpassen.
Nun passiert es nach einiger Zeit (wenn von der Focus Redaktion ein neues item zugefügt wurde), dass die neuen Items mit dem image
http://p3.focus.de/focus-nohotlinking.jpg
dargestellt werden, ebenso die großen Images zum oben erweitert angezeigten item.
Um dies nachzuvollziehen, musst Du die Webseite einfach mal > 15 Min in einem Fenster/Tab vor sich hin laufen lassen.
Das ließ sich bei mir selbst nach einer halben Stunde nicht reproduzieren.
Focus hat mir geantwortet:
"Sie können gerne unseren RSS-Feed auf Ihrer Seite einbinden. Dieser muss dann direkt auf unser Angebot verweisen. Einzelne bzw. komplette Inhalte können Sie aus urheberrechtlichen Gründen nicht übernehmen."Ich gehe davon aus, das sie mit "Inhalte" Text meinen (zu einer klärenden Nachfrage habe ich leider keine Antwort erhalten) und ich somit die Erlaubnis habe, die Images auf meiner Website anzuzeigen.
Texte sind aber auch Überschriften. Diese zeigst Du aber auch an. Inhalte sind aber auch Bilder, die Du ebenso anzeigst. Wenn Du für Dich privat ein Script erstellst, was nur für Dich Anzeigen des RSS-Feeds generiert, dann ist das so in Ordnung, stellst Du aber dieses Script auf Deinem Web der Öffentlichkeit zur Verfügung, verletzt Du die Rechte von focus.de. Daher gehe ich mal wohlwollend davon aus, dass Du Dir nur einen privaten RSS-Feed-Reader bastelst.
Die image-Anzeige funktioniert ja auch, nur eben - wie gesagt - bei neu hinzugekommenen items greift das hotlinking-redirect.
Wenn ich mit dem reload-Link (rechts oben) das Feed-XML neu abrufe, kommen auch wieder die richtigen Bilder zu den neuen items.
Also meine Frage/n:
Was geht da technisch ab? (Mir scheint, dass da bei focus.de ein zeitlicher Zusammenhang zwischen Lesen des Feed-XMLs und Referenzieren der Images hergestellt wird; ein Leeren des Browser-Cache und page reload hilft nicht)
Vermutlich geht da gar nichts ab. Du hast einfach nur ein veraltetes Bild im Browsercache, was immer wieder angezeigt wird.
und was kann ich (technisch) tun (außer bei Focus nochmal nachzubohren und hoffentlich Antwort zu kriegen)?
Hole neue Bilder direkt mit einem Script ab und gucke Dir zur weiteren Lösung des Problems die Response-Header an.
Gruß aus Berlin!
eddi