Update: Da diese Antwort negative Stimmen erhält, habe ich diese Erklärung hinzugefügt.
Ihr Problem ist möglicherweise nicht das tatsächliche Neuladen, sondern die Tatsache, dass Mobile Safari den Cache und die Cookies Ihres Benutzers anders behandelt, wenn Ihre Webanwendung über den Browser geöffnet wird, als wenn sie als Webanwendung auf dem Startbildschirm "installiert" wird. Obwohl die hier vorgeschlagenen Lösungen, die localStorage verwenden, funktionieren, sind sie eine Menge Arbeit für die clientseitige Logik, die vermieden werden kann, wenn Ihr Server bereits dafür verantwortlich ist, den Sitzungsstatus Ihres Benutzers beizubehalten. Die 30-Sekunden-Lösung besteht darin, das Sitzungscookie einfach explizit auf eine längere Lebensdauer festzulegen.
Auf diese Weise können Sie den Status auch zwischen Neustarts des Geräts beibehalten. Auch wenn dies technisch nicht verhindert, dass die Web-App beim Start vom Startbildschirm aus neu geladen wird, ist dies eine einfache Möglichkeit, den Status für den Benutzer ohne ihn wiederherzustellen. Sie bemerkt das Nachladen - was in vielen Fällen, wie ich vermute, das eigentliche Problem ist.
Für eine ausführlichere Diskussion dieser Strategie und Codebeispiele werfen Sie einen Blick auf diese Fragen und meine Antworten dort: