JPEG Bild wird bis zu 5x größer durch Webserver ausgeliefert

  • Thread starter Thread starter counteam
  • Start date Start date
C

counteam

Guest
Hallo,

ich habe vor ca 2-3 Jahren ein SiteBuilder entwickelt gehabt, dem es einen Endkunden ermöglicht via Drag & Drop eine Internetseite zu erstellen.

Der Ablauf ist wie folgt:
- Der Nutzer wählt ein Design aus und klickt sich seine Seite zusammen
- Beim publizieren werden HTML Seiten mit dem Inhalt generiert und via FTP auf dem Webspace des Endkunden hochgeladen

Meinem Kunden (Holländischer Webhoster) ist seit längerem etwas aufgefallen:
Bilder werden in manchen Fällen viel größer vom Webserver ausgeliefert als das Bild eigentlich groß ist. Dieses Phänomen verbraucht unheimlich viel Traffic, was dem Hoster sicherlich stört.

Ich warte jetzt noch auf Antwort, da ich noch nachgefragt hatte welche Module unter Apache aktiviert sind, da das Problem m.E. ausschließlich vom Webserver kommen kann, anders kann ich mir das Problem nicht erklären.

Das Original-Bild, was ich aus Datenschutzrechtlichen Gründen nicht "posten" kann und darf halt folgende Eigenschaften:
Originalgröße: 1.044 KiB
Dimension: 1840x3264

Auszug aus den Apache-Logs:
[21/Jul/2014:05:27:51 +0200] "GET /images/imag1314-1.jpg HTTP/1.1" 200 1061751 "Referer" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_4) AppleWebKit/537.77.4 (KHTML, like Gecko) Version/7.0.5 Safari/537.77.4"

[21/Jul/2014:06:16:54 +0200] "GET /images/imag1314-1.jpg HTTP/1.1" 200 1061751 "-" "msnbot-media/1.1 (+http://search.msn.com/msnbot.htm)"

[21/Jul/2014:07:26:05 +0200] "GET /images/imag1314-1.jpg HTTP/1.1" 200 55062071 "Referer" "Mozilla/5.0 (iPad; CPU OS 7_1_1 like Mac OS X) AppleWebKit/537.51.2 (KHTML, like Gecko) Version/7.0 Mobile/11D201 Safari/9537.53"

[21/Jul/2014:07:52:54 +0200] "GET /images/imag1314-1.jpg HTTP/1.1" 200 1061751 "Referer" "Mozilla/5.0 (iPad; CPU OS 7_0_4 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11B554a Safari/9537.53"

[21/Jul/2014:08:29:40 +0200] "GET /images/imag1314-1.jpg HTTP/1.1" 200 1061751 "Referer" "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36"

[21/Jul/2014:10:32:55 +0200] "GET /images/imag1314-1.jpg HTTP/1.1" 200 1061751 "Referer" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36"

[21/Jul/2014:11:32:36 +0200] "GET /images/imag1314-1.jpg HTTP/1.1" 200 1061751 "Referer" "Mozilla/5.0 (iPad; CPU OS 7_1_2 like Mac OS X) AppleWebKit/537.51.2 (KHTML, like Gecko) Version/7.0 Mobile/11D257 Safari/9537.53"

[21/Jul/2014:11:45:21 +0200] "GET /images/imag1314-1.jpg HTTP/1.1" 200 1061751 "Referer" "Mozilla/5.0 (iPad; CPU OS 7_1_2 like Mac OS X) AppleWebKit/537.51.2 (KHTML, like Gecko) Version/7.0 Mobile/11D257 Safari/9537.53"

[21/Jul/2014:12:19:32 +0200] "GET /images/imag1314-1.jpg HTTP/1.1" 200 25374039 "Referer" "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; MAAU; EIE10;NLNLWOL; rv:11.0) like Gecko"

[21/Jul/2014:12:24:56 +0200] "GET /images/imag1314-1.jpg HTTP/1.1" 200 1061751 "Referer" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36"

[21/Jul/2014:12:38:51 +0200] "GET /images/imag1314-1.jpg HTTP/1.1" 200 1061751 "Referer" "Mozilla/5.0 (Windows NT 6.3; WOW64; rv:30.0) Gecko/20100101 Firefox/30.0"

[21/Jul/2014:13:05:42 +0200] "GET /images/imag1314-1.jpg HTTP/1.1" 200 1061751 "Referer" "Mozilla/5.0 (iPad; CPU OS 7_1_2 like Mac OS X) AppleWebKit/537.51.2 (KHTML, like Gecko) CriOS/36.0.1985.49 Mobile/11D257 Safari/9537.53"

[21/Jul/2014:14:54:31 +0200] "GET /images/imag1314-1.jpg HTTP/1.1" 200 39542039 "Referer" "Mozilla/5.0 (Linux; Android 4.4.2; HTC One Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.141 Mobile Safari/537.36"

[21/Jul/2014:14:57:34 +0200] "GET /images/imag1314-1.jpg HTTP/1.1" 200 1061751 "Referer" "Mozilla/5.0 (iPhone; CPU iPhone OS 7_1 like Mac OS X) AppleWebKit/537.51.2 (KHTML, like Gecko) Version/7.0 Mobile/11D167 Safari/9537.53"

[21/Jul/2014:15:18:46 +0200] "GET /images/imag1314-1.jpg HTTP/1.1" 200 1061751 "-" "Googlebot-Image/1.0"

[21/Jul/2014:15:44:19 +0200] "GET /images/imag1314-1.jpg HTTP/1.1" 200 1061751 "Referer" "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko"

[21/Jul/2014:15:54:11 +0200] "GET /images/imag1314-1.jpg HTTP/1.1" 200 1061751 "Referer" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_4) AppleWebKit/537.77.4 (KHTML, like Gecko) Version/7.0.5 Safari/537.77.4"

[21/Jul/2014:16:07:15 +0200] "GET /images/imag1314-1.jpg HTTP/1.1" 200 1061751 "Referer" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:30.0) Gecko/20100101 Firefox/30.0"

[21/Jul/2014:16:07:55 +0200] "GET /images/imag1314-1.jpg HTTP/1.1" 200 1061751 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko"
(IP-Adressen, Hostname und Referer wurde aus Datenschutzrechtlichen Gründen entfernt)

Jetzt gibts natürlich die Frage warum das Bild manchmal in Originalgröße ausgeliefert wird, manchmal aber bis hin zu das 5-fache?
Das ein Bild eventuell "kleiner" ausgeliefert wird kann ich mir noch durch GZip (als Beispiel) erklären, da ja bekanntlich nicht alle Webbrowser GZip unterstützen, wird das ganze dann eben halt in Originalgröße ausgeliefert - Logisch.
 
Last edited by a moderator:
GZip kann bei JPEG kaum komprimieren. Dewegen ist gzip u. a. auch allgemein deaktiviert in mod_deflate für den MIME-Type image/jpeg.
Wie ist denn bei dir auf dem Server mod_deflate konfiguriert?

Du könntest mal testweise (nicht dauerhaft machen, da Log irgendwann rieseig werden kann) die Kompression zu loggen,
Code:
DeflateFilterNote Input instream
 DeflateFilterNote Output outstream
 DeflateFilterNote Ratio ratio

 LogFormat '"%r" %{outstream}n/%{instream}n (%{ratio}n%%)' deflate
 CustomLog logs/deflate_log deflate

Werden die Bilder durch eine Datenbank erzeugt oder ein Programm oder liegen die immer als Datei vor? Ist die Datei auch 1061751 Bytes?
Passiert die falsche Länge der Response immer bei denselben User-Agents?

//EDIT:
Wird das Bild wirklich größer ausgeliefert und kann dann auch angezeigt werden oder sind das nur falsche Längenangaben für Content-Length?
 
Last edited by a moderator:
Es fällt auf, dass anscheinend ausschließlich mobile UAs das Problem verursachen. Wird etwas wie responsive CSS verwendet, welcher die Größe vom Bild an die Auflösung des Displays anpasst und dies offensichtlich nicht korrekt tut? Das ist zumindest die einzige halbwegs logische Erklärung, warum die Größe der Requests ausschließlich bei mobilen User Agents anders ausfällt (wobei ich nicht viel Ahnung von Web-Sprachen habe, aber das sollte in die richtige Richtung gehen und würde auch erklären, warum das Request des iPads, was vermutlich das größe Display hat, auch am größten ausfällt).
 
Last edited by a moderator:
Ich kann mir das nur erklären, wenn deine Software die vom Browser gesendeten HTTP-Header auswertet und daraufhin bei bestimmten User-Agents größere Bilder sendet.
Vielleicht ein fehlprogrammiertes Programm, das auf eine falsche Ausgabegerät/Auflösung umrechnet.
 
Der Ablauf ist wie folgt:
- Der Nutzer wählt ein Design aus und klickt sich seine Seite zusammen
- Beim publizieren werden HTML Seiten mit dem Inhalt generiert und via FTP auf dem Webspace des Endkunden hochgeladen
Interpretiere ich das richtig, dass es bei dem problematischen Bild um eine statische Datei handelt, die bereits per FTP auf den Webspace geladen wurde? Oder ist das ein Bild, das von deinem Site-Builder dynamisch generiert wird?
 
@elias5000
Das frug ich auch schon früher wie die Bilder erzeugt werden.

@counteam
Wir stochern mittlerweile im Nebel rum, da wir dein CMS nicht kennen.
 
Ich halte mich kurz, da ich grad mobil unterwegs bin:

1. Ja, alle statischen Dateien sind auch statisch (darunter zählen Bilder, Stylesheets, Javascripts,...).

2. Ich habe nur die jeweiligen Logzeilen bekommen, hier sind spontan nur mobile Endgeräte betroffen, so wie es ausschaut

3. Anscheinend hat der Hoster das Problem gefunden, es scheint wirklich an mod_deflate zu liegen.
 
1. Ja, alle statischen Dateien sind auch statisch (darunter zählen Bilder, Stylesheets, Javascripts,...).
Unter der Voraussetzung war das eh nicht deine Baustelle, weil dann dein SiteBuilder völlig außen vor ist. Sonst hätte es auch ein Problem mit Photoshop, Gimp oder Illustrator sein können - je nachdem womit das JPEG erzeugt wurde. Und so eine Annahme ist ja schon offensichtlich völliger Quatsch.
 
@elias5000 Richtig. Da ich das System ja programmiert habe weiss ich eben wie es funktioniert und abläuft. Schon vom Logischen her kam
halt nur der Webserver in betracht, da ich mir das nicht anders erklären kann.

In den VHost wurde einfach ein deflate gesetzt, was das ganze Problem verursacht hatte (zumindest scheint es so):
Code:
<IfModule mod_deflate.c>
      SetOutputFilter DEFLATE
</IfModule>
 
Back
Top