web-dev-qa-db-ja.com

モバイルSafariのキャッシュがクリアされないのはなぜですか?

IPhone4(iOS4)、iPad1(iOS3.3)およびデスクトップでサイトをデバッグしようとしています。

私の問題は、iPhoneのキャッシュをまったくクリアできないことです。

デバッグしているjsファイルにアラート/コンソールを追加すると、iPadとデスクトップに表示されますが、iPhoneはキャッシュからリロードし続けます。

settings>safari>delete browser history, cache, cookiesでキャッシュをクリアし、Safariですべてのブックマークを削除してサーバー上のファイルを削除すると、iPadとデスクトップが壊れます(ファイルがありません)が、iPhoneは何も起こらなかったかのようにページをロードします。

これが適切な質問場所かどうかはわかりませんが、他の誰かが同様の経験と回避策のアイデアを持っている可能性がありますか?

ありがとう!

[〜#〜]編集[〜#〜]
これをもう少し遊んだ。アイコンからアプリケーションを開始すると、キャッシュがクリアされたように見えます。 Mobile Safariでページを開いた場合にのみ、キャッシュから間違ったファイルが使用されます。ポインタはまだ大歓迎です!

[〜#〜]編集[〜#〜]
私はこれについて報奨金を始めています。私はサイトでRequireJSとJqueryMobileを使用しているので、これらもキャッシュがクリアされない理由である可能性があります。それでも、アプリモードでクリアされる理由とMobileSafariでクリアされない理由がわかりません。

私は以下を試しました:
1。 URLバーのreload pageをクリックしても、キャッシュはクリアされません。リンクをクリックしてからgoを介してページをロードすると、キャッシュがクリアされることがあります。

19
frequent

これは少しハッキーですが、おそらくこの回避策を試してみてください(これは開発用だと思います)

ここでajaxキャッシュを無効にする際の注意事項に従って SafariブラウザでAjaxキャッシュを無効にする方法は? 開発中またはこのようなプレーンHTMLでキャッシュなしヘッダーを設定できます

<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Expires" CONTENT="-1">

明らかに、スタックするという最初の問題は修正されません。ただし、任意のクエリパラメータ?something = 3164を追加することでサイクルを中断できるため、URLは事実上一意になります。次にロードするときに、キャッシュなしのパラメータを保持することを願っています。

それでもうまくいかない場合は、ブックマークを設定して、毎回異なるランダム= 14361番号にリダイレクトすることができます。これらはすべて事実上一意の呼び出しですが、それでは愚かな領域に入ります。

適切な解決策が欲しいのですが、JS Webアプリを開発しているときに、しばらくの間すべてが適切に更新される場合と、更新されない場合があります...実際のパターンはわかりません-私が思う事実は別としてデバッガーが有効になっていると、それはあまり行われないようです(しかし、それはまったく根拠がありません;-)

18
joevallender

IOSモバイル向けに開発する場合、USB経由で電話をコンピューターに接続し、開発ツールを使用することで、キャッシュを簡単にクリアできます。

  1. 電話で、開発ツールを有効にします:設定/ Safari /詳細
  2. コンピューターで、Safariの開発メニューを有効にします:設定/詳細
  3. モバイルSafariが開いていることを確認し、電話を検査します:Develop/PHONE_NAME/TAB_NAME
  4. 次に、cmd-shift-rを押して、電話のキャッシュをクリアします。
5
ilo

サファリを停止して再起動し、サファリにあるすべてのページを削除してみてください...ページを閉じる方法の画像を参照してください enter image description here

2
Jigar Pandya

HTML5「オフライン」アプリケーション を扱っていますか?オフラインアプリでのマニフェストファイルの使用はまったく新しいものであり、ブラウザーごとに奇妙な癖があります。サーバー上のマニフェストファイルを変更すると、iPhoneはページを再度フェッチする必要があります。

[〜#〜] edit [〜#〜]:マニフェストファイル(およびそれを指すHTML属性)があった場合、削除した場合マニフェストの順序が間違っていると、キャッシュが絡まる可能性があります。

  1. HTMLとマニフェストが存在します
  2. マニフェストファイルを削除し、HTMLページをリロードします=> HTMLページshouldマニフェスト404なので、マニフェストを解除しますが、一部のブラウザではそうではありません。
  3. (存在しない)マニフェストファイルは変更されていないため、HTMLの変更=> HTMLページはキャッシュを解除しません。

正しくマニフェストを解除するには、次のことを試してください。

  1. HTMLとマニフェストを追加して戻します
  2. 最初にHTMLマニフェスト属性を削除し、ページをリロードします
  3. 次に、マニフェストファイルをサーバーから削除します。
2

サファリのためにデバイスを再起動せずに別の解決策があります、

  1. Settingsに移動します
  2. 次に、下に移動してSafariに移動します
  3. 次に、下に移動してオプションを確認しますClear Cookie and Data下の画像のようにiPhone Safari Clear Cookie and Data

  4. これでサファリに戻り、完了です。

以下に質問コメントがある場合。

1
Ankur Ghelani