web-dev-qa-db-ja.com

Apache2からの奇妙な画像読み込みの問題

ユーザーは、私たちのウェブページにピンクまたは緑の奇妙なストライプのセットを見ることに何度も不満を言っています。最初はビデオカードが突然停止したと思っていましたが、ブラウザ(IE8)からスクリーンショットが送られてきました。後で同じものを見ましたが、Chromeでは色が少し異なります。ユーザーはiPadおよびiPhone(iOS Safari)でこれを経験しています。私は画像をキャッシュするようにサイトを最適化したので、キャッシュをクリアするまで不良画像は残ったままになるので、一度キャッシュを解除すると解決します。私の想定では、画像の送信は途中で切断され、その後そのままになりますが、私の人生ではその理由を理解することはできません。私が確認したものは次のとおりです。

ヘッダーの長さは送信されており、送信は正常に見えます(以下のwgetサンプル)。

wget http://www.superiorlivestock.com/templates/sla2/images/wallbg2.jpg
--2012-04-05 08:46:00--  http://www.superiorlivestock.com/templates/sla2/images/wallbg2.jpg
Resolving www.superiorlivestock.com (www.superiorlivestock.com)... [ip redacted]
Connecting to www.superiorlivestock.com (www.superiorlivestock.com)|[ip redacted]|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 45926 (45K) [image/jpeg]
Saving to: `wallbg2.jpg'

画像はgzipで提供されていません(以下のApache conf):

SetOutputFilter DEFLATE
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary

このサイトはwww.superiorlivestock.comであり、ページの読み込みが悪い例です。 Screenshot

私が見逃している明らかなものはありますか?画像を間違った形式で保存していますか?

3
NateDSaint

Firebug でページを見たときに最初に気づいたのは、一部の画像(具体的には this one 、toomanyairmilesが既にスクリーンショットを投稿していたこと、そして このもう1つ )は単純にhuge—最初のものは4.2メガバイトです!

最初にページを読み込んだとき、toomanyairmilesのスクリーンショットのように、巨大な画像が破損していました。イメージをリロードすると、正しくダウンロードされました。ただし、不思議なことに、どちらの場合も、取得した画像ファイルの長さは4,362,346バイトでした。壊れたバージョンでは、3,903,489バイトの後、正しい画像データが停止し、別の何か(悲しいことに、16進エディターでランダムバイトまたは圧縮JPEG画像データのように見えた)に置き換えられただけです。

とにかく、これらのいくつかの巨大な画像をより合理的なサイズで保存すると、データ破損の根本的な原因が実際に修正されない場合でも、少なくとも問題が発生する頻度は少なくなると思われます。ボーナスとして、ウェブサイトの読み込みも高速になります。

2
Ilmari Karonen

このような問題を抱えているのはあなただけではないようです。 here および here を見てください。これらのスレッドの修正に関する提案がいくつかあります。

マルチWebサーバー環境にいますか?プール内のサーバーの1つにイメージのコピーが破損していませんか?

興味深いことに、それは背景画像に限定されず、破損はダウンロードされた画像に影響し、サーバーではなくファイルに実際に問題があるかもしれないことを示唆しています-どのように画像を保存していますか?

enter image description here

3
toomanyairmiles