Since the upgrade to iOS 6, we are seeing Safari's web
view take the liberty of caching $.ajax
calls. This is in the
context of a PhoneGap application so it is using the Safari WebView. Our
$.ajax
calls are POST
methods and we
have cache set to false {cache:false}
, but still this is
happening. We tried manually adding a TimeStamp
to the headers
but it did not help.
We did more research and
found that Safari is only returning cached results for web services that have a function
signature that is static and does not change from call to call. For instance, imagine a
function called something
like:
getNewRecordID(intRecordType)
This
function receives the same input parameters over and over again, but the data it returns
should be different every time.
Must
be in Apple's haste to make iOS 6 zip along impressively they got too happy with the
cache settings. Has anyone else seen this behavior on iOS 6? If so, what exactly is
causing it?
/>
The workaround that we found was to modify the
function signature to be something like
this:
getNewRecordID(intRecordType,
strTimestamp)
and
then always pass in a TimeStamp
parameter as well, and just
discard that value on the server side. This works around the issue. I hope this helps
some other poor soul who spends 15 hours on this issue like I
did!
No comments:
Post a Comment