iOS 6 へのアップグレード以降、Safari の Web ビューで自由に$.ajax
呼び出しをキャッシュできるようになりました。これは PhoneGap アプリケーションのコンテキストにあるため、Safari WebView を使用しています。私たちの$.ajax
呼び出しはPOST
メソッドであり、キャッシュを false{cache:false}
に設定していますが、それでもこれは起こっています。ヘッダーに a を手動で追加しようとしTimeStamp
ましたが、役に立ちませんでした。
さらに調査を行った結果、Safari は、静的で呼び出しごとに変化しない関数シグネチャを持つ Web サービスのキャッシュされた結果のみを返すことがわかりました。たとえば、次のような関数を想像してください。
getNewRecordID(intRecordType)
この関数は同じ入力パラメータを何度も受け取りますが、返されるデータは毎回異なるはずです。
Apple は急いで iOS 6 を高速化しようとしているに違いありませんが、彼らはキャッシュ設定に満足しすぎていました。他の誰かが iOS 6 でこの動作を見たことがありますか? もしそうなら、正確には何が原因ですか?
私たちが見つけた回避策は、関数のシグネチャを次のように変更することでした。
getNewRecordID(intRecordType, strTimestamp)
次に、常にTimeStamp
パラメーターも渡し、サーバー側でその値を破棄します。これにより、問題が回避されます。