Saturday 11 November 2017

javascript - Is Safari on iOS 6 caching $.ajax results?

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

php - file_get_contents shows unexpected output while reading a file

I want to output an inline jpg image as a base64 encoded string, however when I do this : $contents = file_get_contents($filename); print &q...