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