Mobile Safari использует специальный механизм кэширования Page Cache
(здесь), который в основном сохраняет текущую страницу живым, но зимует, когда мы переходим к другому стр. Таким образом, он может сразу отображать предыдущую страницу в своем последнем состоянии, когда пользователь нажимает кнопку back
.
Это полезно для навигации и просмотра веб-страниц, но для особых случаев это становится раздражающим, поскольку вам может потребоваться получить новую копию страницы при каждом переходе пользователя на эту страницу. (в моем случае у меня есть страницы: логин и главная страница).
Я полностью понимаю, что ничто не мешает пользователю открывать несколько вкладок одного и того же приложения. Я не беспокоился об этом.
Решение кросс-браузер для предотвращения кэширования страницы не помогает, так как Safari сохраняет страницу открытой, но невидимой и приостановленной.
window.onpageshow и обработка event.persisted
не помогают, поскольку кажется, что браузер не запускает событие onpageshow
по некоторым причинам во второй раз (когда вы нажимаете кнопку back
).
Примечание для тех, кто не знает, что такое событие onpageshow
: Apple не рекомендует использовать события load
и unload
, потому что с концепцией кеш страниц эти события не имеют четкого смысла. Таким образом, onpageshow
должен делать то, что мы ожидаем от события load
.