Od czasu uaktualnienia do systemu iOS 6 widzimy, że widok przeglądarki Safari pozwala na buforowanie $.ajax
połączeń. Jest to w kontekście aplikacji PhoneGap, więc korzysta ona z Safari WebView. Nasze $.ajax
wywołania są POST
metodami, a pamięć podręczna ma wartość false {cache:false}
, ale tak się dzieje. Próbowaliśmy ręcznie dodać a TimeStamp
do nagłówków, ale to nie pomogło.
Zrobiliśmy więcej badań i stwierdziliśmy, że Safari zwraca wyniki z pamięci podręcznej tylko dla usług internetowych, które mają podpis funkcji, który jest statyczny i nie zmienia się z połączenia do połączenia. Na przykład wyobraź sobie funkcję o nazwie coś takiego:
getNewRecordID(intRecordType)
Ta funkcja odbiera ciągle te same parametry wejściowe, ale zwracane dane powinny za każdym razem być inne.
Musi być w pośpiechu Apple, aby imponujący zip w iOS 6 był zbyt zadowolony z ustawień pamięci podręcznej. Czy ktoś jeszcze widział takie zachowanie na iOS 6? Jeśli tak, co dokładnie to powoduje?
Obejściem tego problemu było zmodyfikowanie podpisu funkcji w taki sposób:
getNewRecordID(intRecordType, strTimestamp)
a następnie zawsze przekazuj również TimeStamp
parametr i po prostu odrzuć tę wartość po stronie serwera. Działa to wokół problemu. Mam nadzieję, że pomoże to innej biednej duszy, która spędza 15 godzin w tej sprawie, tak jak ja!