これを最終的にどのように解決したかは、レイアウトビューでこれを行うことです:
<script type="text/javascript">
@Html.Raw("var freshPage = true;")
</script>
C# コードを実行すると、javascript 変数が true に設定され、ページが新しく、コントローラー コードを通過したことがわかります。次に、これをグローバル JavaScript ファイルに入れ、ページが表示されるたびにその変数をチェックします。
window.addEventListener('popstate', function () {
// If fresh page is false that means it is a cached page, remove html and reload page.
if (!freshPage) {
$('html').remove();
window.location.reload();
} else {
freshPage = false;
}
});
これは、ページがキャッシュから読み込まれたときに iOS が起動することを確認できた唯一のイベントです。これにより、ユーザーがその変数をチェックして戻るボタンと進むボタンを使用している場合でも、iOS は常にサーバー側のコードを実行するように強制されます。それが最初のページの読み込みである場合、新しいページが true であることがわかり、それを false に反転します。次に、ユーザーが前後に移動してこのページに戻ると、このコードが実行されます。C# コードを実行しなかったため freshPage が false であることを確認し、html を強制終了して、ページを強制的にリロードします。