web-dev-qa-db-ja.com

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

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

https://discussions.Apple.com/thread/657466

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のすべてのリリースで、問題はまだ残っています。私が言ったように、それは断続的であり、私たちのユーザーは「他のサイトには問題がない」として私たちを非難し始めています。

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

ここ は問題の私のサイトへのリンクです。

9
David

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

1
David

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

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

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

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

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

2
Kevin

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

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

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

お役に立てれば!

2
Mikael Lundberg

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

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

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

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

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

1
Otheus