Open asdfzdfj opened 2 months ago
I just tried on my server changing window.onbeforeunload
to window.onpagehide
and now it works properly even on Fennec
on my own testing it's still some bit inconsistent, you sure that you didn't forgot to enable mercure back when testing?
I am very sure that mercure was deactivated when testing, however Fennec still had the problems, because the notifications controller is always loaded, even when mercure is disabled
But enabling mercure still breaks the cache, that's for sure :grin:
yeah that seems to be it, it looks like the other half/part seems to be having mercure connection opened at all, so that's more to investigate
I just tried enabling mercure, but have it not be reachable, so the request fails instantly. That solves the issue. But I think our code behaves differently when the connection is established versus not established... It is really a bummer that it doesn't just use web sockets, but this weird "eventsource" call...
It is really a bummer that it doesn't just use web sockets, but this weird "eventsource" call...
Maybe I am wrong about it though. Seems like eventsources are way older and have wider support than websockets... Still weird
This issue is stale because it has been open 50 days with no activity. Remove stale label or comment or this will be closed in 6 days.
in short: mercure + bfcache +
=> page cannot be stored in bfcache, causing every navigation to do a page loadonbeforeunload
possible solution: rewrite teardown function to either use
pagehide
event or stimulusjsdisconnect()
functionnote that I might be off here, if anyone knows what's more likely them I'm all ears
EDIT 1: ok, maybe
onbeforeunload
isn't tha main culprit, it seems like having an open connection to mercure at all breaks bfcache, still needs more investigatingbased on discussion/discovery here
Originally posted by @BentiGorlich in https://github.com/MbinOrg/mbin/issues/689#issuecomment-2045195482
merde*, I think I have idea why:
onbeforeunload
event listener to tear down the mercure connection https://github.com/MbinOrg/mbin/blob/3e68837b7c06310d5978bbc6190876ae08fd461b/assets/controllers/notifications_controller.js#L13-L21beforeunload
listener is used (the docs seems ancient but that's the only page of firefox bfcache docs I could find atm)* somehow this sound came up in my head upon reading that
Originally posted by @asdfzdfj in https://github.com/MbinOrg/mbin/issues/689#issuecomment-2045229002