Hi Terry,
Any operation that takes longer than 30 seconds is likely to time out the browser. So, as you noted, calls to p_web.Noop() are a good idea.
Yes, there may be places, where you can't add that code - although scratching around for an embed point sometimes helps. If all else fails then you need to adopt a different approach - for example generating a intermediate web page, or emailing the report to the user etc.
There's no other way to keep the connection alive, so I recommend adding embed points to your code templates, and then using the optional parameter approach to pass p_web to those procedures.
cheers
Bruce