Let's actually back up a second.
What problem are you really trying to solve by changing the ordering?
As I see it, right now the situation is as follows (in implementations,
if not in the spec):
1) pagehide fires, with a boolean indicating whether at this point the
UA plans to place the page in the page cache.
2) Whether the page is in fact placed in the page cache depends on
actions taken by scripts on the page that fire from the pagehide event
(at least in Gecko).
3) Even after a page has been placed in the page cache it can be
evicted from the page cache for various reasons (again, at least in Gecko).
How does the firing of visibilitychange events after pagehide affect
things here in an undesirable way?
-Boris