Ik heb een webpagina waarop de gebruiker aanpassingen kan maken zonder dat de pagina herladen wordt. De aanpassingen worden achter de schermen doorgestuurd naar de server en opgeslagen in de database. Het probleem is dat wanneer de gebruiker naar een andere pagina gaat en vervolgens de browser back button gebruikt, de oude versie van de pagina getoond wordt zonder de aanpassingen die hij gemaakt heeft (zoals de pagina van de server geladen werd).
Een naieve manier om dit op te lossen lijkt location.reload() op te roepen bij een pageshow event, maar dan krijgt de gebruiker eerst de oude versie van de pagina te zien totdat javascript geladen is. Dit ziet er niet echt mooi uit dus.
Een elegantere oplossing die ik me kan bedenken is gebruik maken van history.replaceState. Het probleem met deze aanpak is dat de URL tekens veranderd moet worden, of de browser blijft de oude versie tonen (nieuwe URL = cache miss). Een random querystring parameter genereren bij de URL van history.replaceState zou dit probleem oplossen, maar dit blijft een hack.
Mijn probleem kort samengevat: hoe kan ik maken dat history.replaceState werkt zonder de URL te wijzigen en indien dit (waarschijnlijk) niet gaat, welke alternatieven zijn er die ik over het hoofd zie?
Een naieve manier om dit op te lossen lijkt location.reload() op te roepen bij een pageshow event, maar dan krijgt de gebruiker eerst de oude versie van de pagina te zien totdat javascript geladen is. Dit ziet er niet echt mooi uit dus.
Een elegantere oplossing die ik me kan bedenken is gebruik maken van history.replaceState. Het probleem met deze aanpak is dat de URL tekens veranderd moet worden, of de browser blijft de oude versie tonen (nieuwe URL = cache miss). Een random querystring parameter genereren bij de URL van history.replaceState zou dit probleem oplossen, maar dit blijft een hack.
Mijn probleem kort samengevat: hoe kan ik maken dat history.replaceState werkt zonder de URL te wijzigen en indien dit (waarschijnlijk) niet gaat, welke alternatieven zijn er die ik over het hoofd zie?