Problemas com o cache de página no iOS 5 Safari ao navegar pelo evento de retorno / descarregamento não acionado

tl; dr - O Safari no iOS 5 está fazendo um cache tão difícil que está quebrando meu sit

Estou tendo problemas com a maneira como o navegador Safari no iOS 5 lida com o cache de retrocesso, que eles chamam de "cache de página". A maneira como é descritoaqu explica o comportamento muito bem.

Simplesmente, o cache de página o faz quando, quando você sai de uma página, “pausamos” e quando você volta, pressionamos “play”

Isto está causando problemas em todo o meu site. Ao usar o botão Voltar, a maioria dos outros navegadores mostra a página no estado em que foi carregada. Não é o Safari no iOS 5, ele mostra a página como você a deixou pela última vez. Um exemplo simples seria a desativação de um botão de envio. Se eu usar o Javascript para desativar um botão de envio, envie um formulário. Quando você clicar novamente, o botão de envio ainda estará desativado. Esse foi um problema em outros navegadores, incluindo a versão para desktop do Safari, mas é resolvido configurando o manipulador de eventos onload para uma função em branco. Eu acredito que isso diz ao navegador para invalidar o cache, porque algo importante poderia ter acontecido nessa função. Esse hack parece não funcionar no Safari no iOS 5.

Abaixo é o problema resumido ao essencial. Ao carregar o test.html, você verá o texto "Texto original". Quando você clica no link, esse texto muda para "Texto alterado - encaminhamento para a próxima página" e, em 3 segundos, você será encaminhado para test2.html. Tudo está bom até este ponto em todos os navegadores. Em todos os outros navegadores, quando você clica no botão Voltar, o texto que você vê é "Texto original", mas no Safari para iOS 5 você vê "Texto alterado - encaminhando para a página seguinte".

Alguma sugestão sobre como lidar com isso?

Este é um exemplo simples

test.html

<script>
function changeText() {
    el = document.getElementById("text");
    el.innerHTML = "Changed text - forwarding to next page";
    setTimeout("forward()",3000);       
}
function forward() {
    document.location.href = "test2.html";
}
</script>
<div id="text">Original Text</div>
<a href="Javascript:changeText()">Click Here</a>
<script>
window.onunload = function(){};
</script>

test2.html

<div>Click back button</div>

Este é um segundo exemplo usando uma postagem de formulário. Este é um exemplo simples de como meu aplicativo está funcionando. Quando você voltar para formtest2.asp, deverá ver o valor do formulário postado e o texto div deve ser origina

formtest.asp

<form method="post" action="formtest2.asp">
    Test: <input type="text" name="test"/>
    <input type="submit" value="Submit"/>
</form>

formtest2.asp

<script>
function changeText() {
    el = document.getElementById("text");
    el.innerHTML = "Changed text - forwarding to next page";
    setTimeout("forward()",3000);       
}
function forward() {
    document.location.href = "test2.html";
}
</script>

<%
Dim test
test = Request("test")
Response.Write("Test value: " & test & "<br />")
%>

<div id="text">Original Text</div>
<a href="Javascript:changeText()">Click Here</a>
<script>
window.onunload = function(){};
</script>

test2.html

<div>Click back button</div>

questionAnswers(4)

yourAnswerToTheQuestion