The page load event is always fired.
If you don't get page_load this is because something (most probably the browser) decided to cache the page.
It could also be server side caching.
To fix your issues you must tell the browser not to cache the page.
Typically you'd add in your page load
Response.Cache.SetCacheability(HttpCacheability.NoCache);