Desde a atualização para o iOS 6, estamos vendo a visualização na Web do Safari ter a liberdade de fazer cache de $.ajax
chamadas. Isso ocorre no contexto de um aplicativo PhoneGap e, portanto, ele usa o Safari WebView. Nossas $.ajax
chamadas são POST
métodos e temos cache definido como false {cache:false}
, mas ainda está acontecendo. Tentamos adicionar manualmente um TimeStamp
aos cabeçalhos, mas não ajudou.
Pesquisamos mais e descobrimos que o Safari está retornando apenas resultados em cache para serviços da Web que possuem uma assinatura de função estática e que não muda de uma chamada para outra. Por exemplo, imagine uma função chamada algo como:
getNewRecordID(intRecordType)
Essa função recebe os mesmos parâmetros de entrada repetidas vezes, mas os dados retornados devem ser diferentes a cada vez.
Deve estar na pressa da Apple para fazer com que o iOS 6 se movimente de forma impressionante, eles ficaram muito felizes com as configurações de cache. Alguém mais viu esse comportamento no iOS 6? Se sim, o que exatamente está causando isso?
A solução alternativa que encontramos foi modificar a assinatura da função para algo como isto:
getNewRecordID(intRecordType, strTimestamp)
e sempre passe também um TimeStamp
parâmetro e apenas descarte esse valor no lado do servidor. Isso funciona em torno do problema. Espero que isso ajude outra pobre alma que passa 15 horas nessa questão, como eu fiz!