MbinOrg / mbin

Mbin: a federated content aggregator, voting, discussion and microblogging platform (By the community, for the community)
https://joinmbin.org
GNU Affero General Public License v3.0
167 stars 17 forks source link

using mercure somehow breaks bfcache #696

Open asdfzdfj opened 2 months ago

asdfzdfj commented 2 months ago

in short: mercure + bfcache + onbeforeunload => page cannot be stored in bfcache, causing every navigation to do a page load

possible solution: rewrite teardown function to either use pagehide event or stimulusjs disconnect() function

note 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 investigating


based on discussion/discovery here

You know what's great... It is mercure... I had it enabled and it is disabled on kbin.run Now I have disabled it and no more extra requests...

Originally posted by @BentiGorlich in https://github.com/MbinOrg/mbin/issues/689#issuecomment-2045195482

merde*, I think I have idea why:

* 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

BentiGorlich commented 2 months ago

I just tried on my server changing window.onbeforeunload to window.onpagehide and now it works properly even on Fennec

asdfzdfj commented 2 months ago

on my own testing it's still some bit inconsistent, you sure that you didn't forgot to enable mercure back when testing?

BentiGorlich commented 2 months ago

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

BentiGorlich commented 2 months ago

But enabling mercure still breaks the cache, that's for sure :grin:

asdfzdfj commented 2 months ago

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

BentiGorlich commented 2 months ago

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...

BentiGorlich commented 2 months ago

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

github-actions[bot] commented 1 month ago

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.