2009-03-04 11 views
0

Ich habe eine einfache JSF-Bild-Browsing-App erstellt, und ich habe ein Problem mit Firefox.Firefox Bilder langsam anfragen

Die App selbst läuft in Tomcat. Die Bilder werden in einem Verzeichnis gespeichert, das von Apache bedient wird. Ich habe 9 Bilder, die auf einer Seite angezeigt werden. Die Server befinden sich auf einer vom Client getrennten Maschine. Wenn ich versuche, die Seite in Firefox zu laden, werden normalerweise 6 der Bilder fast sofort geladen (< 500ms). Die anderen drei benötigen zwischen 15 und 20 Sekunden zum Laden. Wenn man sich die Apache-Logs anschaut, sieht es so aus, als ob firefox diese drei Bilder nicht anfordert, bis die 15-20 Sekunden vergangen sind - das heißt, ich sehe 6 Anfragen zur gleichen Zeit, dann 15 Sekunden später die anderen drei. Ich habe die Website im Internet Explorer ausprobiert, und IE hat dieses Problem nicht; Es lädt alle 9 Bilder sofort. Ich habe ein paar verschiedene Maschinen ausprobiert und die gleichen Ergebnisse erzielt. Das html wird sehr schnell gerendert, < 200ms, also glaube ich nicht, dass dies ein JSF-Problem ist (vor allem, da die Bilder aus Apache stammen).

Die Zahlen sind auch nicht immer die gleichen - manchmal wird es 8 Bilder laden, manchmal 7, manchmal die zweite Charge von Anfragen werden alle auf einmal kommen, und manchmal wird es 2 mehr laden, als eine mehr usw. Ich bin mir nicht sicher, ob das ein Firefox-Setting oder ein Bug ist, oder ob es etwas Serverseitiges gibt, aber ich dachte, ich würde es dort rauswerfen und sehen, ob irgendjemand Ideen hat, die ich ausprobieren kann.

Wenn es, hier ist ein Apache-Log-Zeile von Firefox

192.168.1.30 - - [04/Mar/2009:14:25:40 -0500] "GET /work/DSCF0185_thumbnail.jpg HTTP/1.1" 200 7902 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6 (.NET CLR 3.5.30729)" 

und eine von IE

192.168.1.30 - - [04/Mar/2009:14:34:14 -0500] "GET /work/DSCF0179_thumbnail.jpg HTTP/1.1" 304 - "http://192.168.1.83:8080/app/browse.jsf" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; InfoPath.2; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 1.1.4322; MS-RTC LM 8; Windows-Media-Player/10.00.00.3990; FDM; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)" 

bearbeiten hilft habe ich die Timings von Firebug - es zeigt, dass die gesamte Anfrage ist (zum Beispiel) 18 Sekunden, mit 17,9 Sekunden "Daten empfangen", und der Rest wird in Warteschlangen aufgenommen. Ich sehe die eigentliche Anfrage im Apache-Protokoll jedoch nicht bis zum Ende dieser 17,9 Sekunden, was mich zu der Annahme verleitet, dass es sich um eine Firefox-Sache handelt, zumal IE das Problem nicht zeigt. Wenn es auf dem Server wäre, würde ich erwarten, das Problem in beiden Browsern zu sehen.

Pipelining in Firefox ist ausgeschaltet.

Wie bereits erwähnt, zeigt mein IE-Protokoll, dass es den Cache trifft - mein Fehler hat den falschen Teil der Protokolldatei erfasst. Hier ist eine saubere Protokollzeile - selbst nach einem gelöschten Cache zeigt IE nicht die gleichen Probleme wie Firefox.

192.168.1.30 - - [04/Mar/2009:15:52:18 -0500] "GET /vantagework/DSCF0189_thumbnail.jpg HTTP/1.1" 200 5805 "http://192.168.1.83:8080/vantage/browse.jsf" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; InfoPath.2; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 1.1.4322; MS-RTC LM 8; Windows-Media-Player/10.00.00.3990; FDM; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)" 

Antwort

0

Es stellt sich heraus, dass dies durch meine Apache-Konfiguration verursacht wurde. Einige Tuning-Anpassungen wurden vorgenommen, und das Zurücksetzen auf die Out-of-the-Box-Apache-Konfiguration behob das Problem.

3

Verwenden Firebug „Net“ Konsole zu überprüfen, ob es sich um firefox, oder der Webserver, wie der Webserver ist es Zeit zu nehmen, könnte die Verbindungen zu akzeptieren.

Firebug „Net“ Konsole wird Ihnen zeigen, wenn es Dinge beginnt anfordert, und geben Sie eine detaillierte Aufschlüsselung der verschiedenen Teile des Bildes anfordert (Queuing, etc etc) -

0

Nach Ihren Log-Schnipsel, IE holt das Bild aus dem Cache, Firefox holt es vom Server. Wenn also etwas mit der Serverkonfiguration, die das Image langsam liefert, etwas nicht stimmt, werden Sie im IE nur dann ein ähnliches Verhalten sehen, wenn Sie den Cache zuerst löschen. Daher würde ich versuchen, zu überprüfen, dass nicht zwischengespeicherte Bilder tatsächlich unterschiedliche Werte annehmen Zeit zwischen Firefox und IE herunterzuladen.

Die andere Sache, die ich überprüfen würde, ist zu sehen, ob Sie pipelining in Firefox aktiviert haben. Wenn Sie dies tun, würde ich vorschlagen, dass Sie es deaktivieren, es könnte ein Problem für Ihren Server verursachen.

Verwandte Themen