1

ホーム画面に保存されたモバイル Web アプリがあります。このアプリケーションは、jquery モバイルで単一ページの HTML ファイルを使用してコーディングされています。

iOS5 以下では、index.html ファイルはデバイスによってキャッシュされないため、アプリケーションが起動されるたびに、デバイスは HTML ページを要求します。サーバーの前に認証を処理する別のアプリケーションがあり、リダイレクトを認証させる 302 http コードに依存しているため、これは非常に重要です。これが成功すると、別のリダイレクトが発生して index.html ページに戻ります。

iOS6 では、no cache コントロール ヘッダーを設定しても、index.html ファイルがキャッシュされているように見えます。これは問題です。認証を取得できないため、ユーザーがアプリケーションの使用を開始すると、すべての要求が失敗します (認証されていない)。

これが iOS6 で実装された機能であったかどうかの詳細を見つけることができないようです。誰でもこれに光を当てますか?彼らがキャッシング(投稿応答のキャッシング)に少し夢中になったことは知っています...

注: 認証の解決策は理想的ではないことを理解してください。ただし、現時点では変更できません。Apple がこのバグを引き起こした原因についての参照を探しているだけです!

アップデート:

サーバーが応答しているCharles Web Debugging Proxyを使用した後、興味深いことを発見しましCache-Control:privateた。つまり、プロキシはキャッシュされませんが、ブラウザはキャッシュされます。これにより、iOS 6 のホーム画面のモバイル Web アプリが実際にこのキャッシュ制御を正しく扱うようになったのかという疑問が生じます?!? インフラストラクチャのどのハードウェアがこのキャッシュ制御を追加しているかをさらに調査する必要があります。

4

3 に答える 3

1

私は自分のアプリケーションで同じ問題に苦しんでおり、iOS6 が応答をキャッシュするのを避けるために、要求のヘッダーを Cache-control: no-cache で設定する必要があることを発見しました。

次のリンクをご覧ください。

iOS 6 の Safari は $.ajax の結果をキャッシュしていますか?

于 2012-10-05T17:08:20.723 に答える
1

HTML5/JQM/Jersey ベースのアプリケーションでも同じ問題が発生しています。cache-controlヘッダーをno-cacheに設定すると、ほとんどのデバイスで動作するようになりましたが、断続的に失敗するデバイスもあります。

于 2012-10-03T15:05:00.440 に答える
0

使用する場合:

Cache-Control:no-cache, no-store

iOS6 が AJAX 呼び出しをキャッシュする方法はないはずです。私は、iOS6 が実際にルールに従い始め、最初に動作するように意図された "Cache-control:private" を実装したと思われますが、他のほとんどのブラウザはそれを単に 'no-cache' ディレクティブとして扱います。

PHPのSAJAXフレームワーク(「プライベート」に設定されていた)を使用しているときに、同じ問題が発生しました。

于 2012-10-09T21:14:32.250 に答える