I have managed to reduce the load time of my IFrame canvas pages significantly by saving the FBService in session and calling CanvasIFrameBasePage.Page_Load only when necessary.
I created my own base class which inherits the CanvasIFrameBasePage, which checks if the service exists in the session and otherwise calls base.Page_Load.
This improves a ton. But I'm worried about session expiration. Since I'm not pretty sure about the session rules, can anyone shed some light on the dangers it imposes and how to avoid them?