キープアライブ+ HTTPパイプラインを使用してiOS 8で画像スワッピングの問題を修正する方法


9

iOS8以降、私が管理していたサイトで、画像が他の画像と場所を交換するという断続的な問題が発生しています。これは多くの場所で言及されていますが、明確な解決策はありません:

https://discussions.apple.com/thread/6574663

http://tech.vg.no/2011/12/14/safari-on-ios-5-randomly-switches-images/

http://tech.vg.no/2012/02/01/safari-on-ios-5-randomly-switches-images-part-3/

以前はiOS5の問題でした。私たちのサーバーは、パイプラインとキープアライブを備えたLightspeedを実行しています。私のサーバー管理者は、パイプライン処理が要求された順序でアセットを返すことを確認しました。キープアライブを無効にすると問題が解決する可能性があるが、サーバーの負荷が大幅に増加することになると彼は述べていますが、これは本当に悪いことです。

私のすべてのアセットもcontent-lengthを正しく渡します。

これに対する解決策については、私は本当に行き止まりにいます。私のユーザーの多くがiOSを使用しているため、その始まりは誰にとっても非常に苛立ち始めています。

これは、Safariにかなり大きな変更が加えられたiOS8の導入でのみ発生し始めました。8のすべてのリリースで、問題はまだ残っています。私が言ったように、それは断続的であり、私たちのユーザーは「他のどのサイトにも問題はない」と非難し始めています。

誰かがこれに光を当てることができるのだろうか?他の誰かがこの問題を経験したり、解決策を見つけたりしましたか?

ここに問題の私のサイトへのリンクがあります。


ServerFault Davidへようこそ。この問題をおそらくWebサイトのhtmlに絞り込めますか?それともこれは特にSafariの問題ですか?テストするiPhoneはありませんが、どの画像が取引場所であるかを示すことができるので、Droid(ジョーク)を所有するのに十分な知識がない人でも問題を再現できますか?また、電話に別のブラウザをインストールしてみて、それがSafariの問題かiOSの問題かを確認してください。
MDMoore313 2015

2
@BigHomie iOS8のSafariに固有です。Google Chromeでは発生しないようです。また、問題は他のプラットフォームでは発生しないようです。
デビッド

こんにちは !あなたが本当の問題に集中するのに役立つ多くの質問があります。問題はSafari OS Xで発生しますか?シミュレーターのSafari iOSで問題が発生しますか?Safariインスペクターリンクを開いて、画像へのリンクが正しいかどうか、またはSafariのキャッシュの問題かどうかを確認しましたか?これらの質問は、問題の根本につながるはずです。
DeadEye

@DeadEye問題はiOS 8でのみ発生すると確信しています。シミュレータで発生したかどうか、ウェブインスペクタで異常が見られないかどうかはわかりません。実際、間違った画像にもかかわらず、画像は正しいファイル名で返されます。私の最大の問題は、アップルへのレーダーレポートが理由もなく閉鎖され、openradarがディスカッションフォーラムのすべての情報にもかかわらず、何の活動も行わないことです。
デビッド

Safari iOSを介してスワップされた画像の画像パスに直接移動しようとした場合、それは正しい画像ですか?
DeadEye

回答:


2

私たちにもこの問題があり、解決策は、HTML内のすべてのタグを削除し、代わりにbackgroundプロパティを持つcssクラスを使用することでした。次に例を示します。

.img_logo {
  background: url(../images/logo.png?v=20150427) no-repeat;
  width: 175px;
  height: 49px;
  display: block;
}

ちょっと気まずい感じですが、これが問題を解決する唯一の方法でした。欠点の1つは、画像の「alt」を削除する必要があったことですが、必要に応じてJavaScriptで解決できると思います。

お役に立てれば!


2

立ち上げたばかりの新しいウェブサイトでこの問題に対処していました。FF / Opera / Chromeなどではすべてが問題なく見えましたが、iOS8以降では画像のスワッピングに大きな問題がありました。この問題を報告しているサイトの多くがLitespeedウェブサーバーを実行していることに気づきました。私はテストのために少しの間Apacheに切り替えました、そして確かに、ウェブサイトは問題なくロードされました。私のホスト(wiredtree.com、優れたサービス)とLitespeedの構成オプションのいくつかを見て、これら2つのオプションを無効にしました。

  • 圧縮を有効にする
  • 動的圧縮を有効にする

これら2つを無効にした後、Webサイトは問題なく読み込まれました。非常にわずかなパフォーマンスの打撃を受けましたが、それだけの価値があります。

最初は、キープアライブを無効にしてHTTPパイプラインを効果的に無効にしようとしましたが、問題は解決しませんでした。上記は、私が実際に解決策を提供した唯一のことです。

うまくいけば、これは同じ問題を扱う誰かを助けることができます!


1

答えではなく、問題を解決するためのアプローチ:

  1. 実稼働中のWebサーバーを使用するアプリの開発バージョンを使用して、自分で問題を再現します。それをカバーすることを確認するだけです。
  2. 新しいホスト名/ CNAMEエントリと対応する仮想ホストをWebサーバーに作成するか、必要に応じて手順3で別のポートに別のHTTPサーバーを作成します。これは「テストHTTPサーバー」として知られています
  3. テスト/開発バージョンをこの新しいHTTPサーバーに向けて、問題を再現します。これができるまで、ステップ4に進まないでください。
  4. 次に、このテストHTTPサーバーで、リダイレクトまたは(Apacheで可能な限り)インテリジェントな構成のいずれかを使用して、キープアライブ、圧縮、https、キャッシング、パイプラインなど、考えられるあらゆるものを無効にします。問題を再現し、これを行うすべての構成タプルと行わない構成タプルをメモします。
  5. LitespeedサーバーをApahceと交換します。繰り返しになりますが、優れたシステム管理者にとってはかなり簡単なはずです。(エヘン)。問題を再現します。

手順5まで問題を再現でき、設定の変更やサーバーソフトウェアの変更のセットによって違いが生じない場合、問題はiOSにあり、おそらく何もできません。(しかし、これはありそうもないことです。)

ただし、Litespeedに依存しない一連の構成変更がある場合(つまり、Apacheでも発生する)、回避策を実行できBrowserMatchます。特定の(一連の)ブラウザーを検出するディレクティブを使用します。このセットBrowserMatchセットの構成パラメーターを設定します。この種の例は、IE 3.0およびNetscapeブラウザーまでさかのぼります。

問題がLitespeedであることが判明した場合は、上記のアプローチを使用して、Litespeedサポートにバグを報告してください。あなたはサポートの代金を払っていますね。


1

私の場合、http / 2プロトコルを使用すると問題が解決したようです。しかし、この問題に対する実際の修正/解決策があるかもしれないと確信しています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.