asp.net Global.asax 页面访问只执行一次的事件解决思路

asp.net Global.asax 页面访问只执行一次的事件
一下罗列了很多的事件
  * Application_BeginRequest 发生在每个请求 非常的繁琐请求都会触发。
  ·Application_AuthenticateRequest 在安全模块建立起当前用户的有效的身份时,该事件被触发。在这个时候,用户的凭据将会被验证。
  ·Application_AuthorizeRequest 当安全模块确认一个用户可以访问资源之后,该事件被触发。
  ·Application_ResolveRequestCache 在ASP.NET确定是否应该生成新的输出,或者由缓存填充前触发。无论何种情况,都将执行该事件处理程序中的代码
  ·Application_AcquireRequestState 在获取会话状态之前执行
  ·Application_PreRequestHandlerExecute在ASP.NET 页面框架开始执行诸如页面或 Web 服务之类的事件处理程序之前,该事件被触发。
  ·Application_PreSendRequestHeaders 当HTTP处理程序与页面请求一起完成时触发。此时,Response对象将获得由客户端返回的数据。
  ·Application_PreSendRequestContent 在ASP.NET页面框架发送内容给请求客户(浏览器)时,该事件被触发。
  ·<<执行代码>>
  ·Application_PostRequestHandlerExecute在ASP.NET 页面框架结束执行一个事件处理程序时,该事件被触发。
  ·Application_ReleaseRequestState 当释放和更新试图状态时触发
  ·Application_UpdateRequestCache 如果输出被缓存,那么缓存更新时将触发
  ·Application_EndRequest 当请求结束时执行

但是上面的事件都会执行很多次。。这样效率就很低。我现在想要达到的目的就是能在用户访问每一个页面的时候,都执行一次相同的控制。 但是上面的方法在页面访问的时候要执行很多次。 请问 有只执行一次的事件、或者在Global.asax下比较好的控制方法吗?

------解决方案--------------------
2楼的是对的 用HttpModule  
当然你也可以 override OnInit 事件