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)"