Seite 1 von 1

Zur Info: "Prefetchende" Browser

Verfasst: 16.09.2003 20:12
von Gast200921
Hallo phpBBler,

ich stand neulich vor einem Bugreport, den ich 'auf-Teufel-komm-raus' nicht reproduzieren konnte. Die Quelle des Bugreports war in diesem Fall jedoch absolut vertrauenswürdig, so daß da was dran sein musste....
:roll:
Ein User in meinem Forum beschwerte sich, daß immer gleich zwei Threads als gelesen markiert werden, auch wenn er lediglich einen davon liest bzw. beantwortet. Ich habe das gesamte Cookie-Handling des Forums auf den Kopf gestellt, mit den Original-Dateien verglichen und bin nicht fündig geworden.

Schlußendlich habe ich es entdeckt: Netscape 7, Mozilla 1.2ff und Opera 7ff verfolgen Links und laden sie im Hintergrund. :roll: Es lag also kein Fehler vor, der Thread ist tatsächlich vom Client abgerufen worden. Augelöst wird dies durch die NavBar-Links im Code von phpBB.

Ist also alles eine absulolut nachvollziehbare Geschichte, aber wenn man zum ersten Mal damit konfrontiert wird (gerade, wenn man selber IE-User ist), dann kann einem das schon arges Kopfzerbrechen bereiten.

Man kann das Prefetching dieser o.g. Browser als User übrigens abstellen. Alternativ könnte man als phpBB-Webmaster auch darauf reagieren und Prefetching-Anfragen erst gar nicht zulassen bzw. gesondert behandeln. Erkennen kann man diese dadurch, daß sie im HTTP-Header das Flag "X-moz: prefetch" tragen. (Aber Vorsicht: Dieses Flag ist noch nicht in irgendeinem Standard vertreten und könnte sich von einem Tag auf den anderen ändern.)

Diese Zeilen nur zur Info, falls Ihr vor einem ähnlichen "Bugreport" steht. :wink: Weitere Infos z.B. unter der folgenden Adresse:
http://www.mozilla.org/projects/netlib/ ... g_FAQ.html


Grüße,
cyberWolf

Verfasst: 16.09.2003 20:34
von Pyramide
URLs with a query string are not prefetched. This is done because such URLs often result in documents that cannot be reused out of the browser's cache, so prefetching them often has little benefit. We found that some existing sites utilize the <link rel="next"> tag with URLs containing query strings to reference the next document in a series of documents. Bugzilla is an example of such a site that does this, and it turns out that the Bugzilla bug reports are not cachable, so prefetching these URLs would nearly double the load on poor Bugzilla! It's easy to imagine other sites being designed like Bugzilla, so we explicitly do not prefetch URLs with query strings
Das heißt doch daß das so wie du es beschrieben hast eigentlich nicht vorkommen dürfte - die phpBB viewtopic/viewforum URLs haben schliesslich einen Query String :roll:

Verfasst: 16.09.2003 21:22
von Gast200921
...nicht, wenn man ein vollständiges mod_rewrite am Laufen hat. :wink: Ich gebe ja zu: Diese Problematik ist sehr speziell und nur wenige werden davon betroffen sein. Aber ich war so überrascht, daß ich das Bedürfnis hatte, dies mit Euch zu teilen.
:D


Grüße,
cyberWolf

Verfasst: 16.09.2003 22:04
von itst
Wollen wir das mal präzisieren:

Von diesem "Bug" sind nur phpBB-Installationen betroffen, bei denen der Webserver so konfiguriert ist, das URL's nicht wie gewohnt mit "Querys" arbeiten (erkennbar an ? und & in der URL), sondern mittels bestimmter Mechanismen (im Falle des Apache Webserver mod_rewrite) so aussehen wie eine Pfadangabe.

Bspw. http://www.forum.de/viewtopic/12345 statt http://www.forum.de/viewtopic.php?t=12345

Normale Webserver-Installationen betrifft das nicht.

Dieses "Feature" kann nur vom Hoster konfiguriert werden, Shared-Hosting-Kunden können sich beruhigt zurücklehen.

Verfasst: 20.06.2004 23:10
von m0bby
Argh,
diesen Thread hier hätte ich mal eher finden sollen! :evil:
Stattdessen habe ich ihn sozusagen als "reverse lookup" gefunden. Sprich, nachdem ich wusste wonach ich suchen muss.

Hintergrund. Ich habe den "Unread Post Information to Database (UPItoDB)" MOD und den "Short URLs" MOD zusammen installiert. Und dabei tritt genau der von cyberWolf beschriebene Fehler auf, dass immer gleich zwei Threads als gelesen markiert werden.
Ich habe mir fast alle Zähne daran ausgebissen, die Ursache zu finden. Bis ich dann nur noch die Möglichkeit übrig blieb, dass der Browser die Folgeseite im Hintergrund vorausladen muss. Eine andere Möglichkeit blieb eigentlich nicht mehr.
Ich habe das Problem gelöst, indem ich in der viewtopic.php diese Zeilen gelöscht habe:

Code: Alles auswählen

$nav_links['prev'] = array(
	'url' => $view_prev_topic_url,
	'title' => $lang['View_previous_topic']
);
$nav_links['next'] = array(
	'url' => $view_next_topic_url,
	'title' => $lang['View_next_topic']
);

Eigentlich ganz einfach. Wenn man weiß, wonach man suchen muss...


Schönen Gruß
mObbY

Verfasst: 20.06.2004 23:30
von PhilippK
itst hat geschrieben:Dieses "Feature" kann nur vom Hoster konfiguriert werden, Shared-Hosting-Kunden können sich beruhigt zurücklehen.
Es gibt ja auch noch die .htaccess :D

Gruß, Philipp

Verfasst: 21.06.2004 00:12
von itst
Wenn mod_rewrite nicht installiert oder für Benutzer nicht freigeschaltet ist, nutzt Dir auch eine .htaccess nichts.