I assume this is related to the app pool, however I've never experienced this delay with other .net apps so not 100% sure if there is a setting specific to the forum setup that is causing this.
Any suggestion as to what I should be looking for to fix this issue?
There are a few sites running off the same App Pool. I've already reduced the recycle time for the app pool. If I setup a new app pool, reduce the recycle time and set IIS to not shutdown the app pool, is that the best workaround?
Like I said, if you have an application that is 'leaking' memory and otherwise not very well optimized, if you give it a long Recycle interval, you can suffer from that pool consuming memory and resources and dragging down IIS in the process - so as you adjust, be sure to monitor performance accordingly to find that 'sweet spot' configuration that works for you.
The big thing that is slowing the .NET applications down is that they are re-compiled every time IIS recycles. Many YAF components are 'pre-compiled' but there is still time needed for ASP.NET to create and start serving it's temporary compiled files, which is where you are seeing the lag from. Depending on your server hardware, possibly faster hard drives may help but it won't be that much help that it's worth re-commissioning a server over it, if you know what I mean.
Essentially, it's not going to be a 'true' workaround, but more of a performance optimization - you'll basically just be tuning your IIS to react differently to your installed applications.
I'll get back to work on tweaking for performance as suggested.
The workaround I implemented is working brilliantly so far. The workaround required installing the IIS Application Initialisation module (for IIS7.5) and then adding in the required web.config entries. The module works by calling a user specified page after app pool idle timeout to essentially keep the app alive. It's taken the forum default page load time from about 15-30 seconds down to virtually instant every time I had tested it.
I hope this will help the next person!
I'm hoping this module works, thanks for the input!
EDIT: Just to update, this method did fix my problem!