Slow Initial Page Load
When you try to access the website for the first time after it has been idle it takes about 20-25 seconds to load up the page then every load after that will be almost instant until the page is not visited for some time again where it will again take 20-25 seconds to load and then instantly after again. Is there any way to improve this load time? I have tried the recommended suggestions of keeping the application "warm" using application initialization on IIS but still having same issue.
Hi Hector,
Please note that the first load delay is a normal behavior in Asp.Net. You may consider increasing the Idle timeout (see image) and review this article.
You may also find useful the below resources to improve the performance in general:
http://docs.sitefinity.com/tips-for-optimizing-performance
http://www.sitefinity.com/blogs/slavoingilizov/posts/slavo-ingilizovs-blog/2012/03/14/5_practices_to_avoid_when_doing_sitefinity_development
In addition, you can enable the "Wait for page OutputCache to fill" option under Administration -> Settings -> Advanced -> Output Cache Settings -> Output Cache Profiles -> (the caching profile you have selected for your page).
You can also try to load the scripts using CDN. It should speed up the scripts loading, as well as, increase the chance to load the script from browser cache. You can enable it from Advanced settings -> Pages -> Script Manager -> Enable CDN.
I hope this helps.
Best Regards,
Junior Dominguez
Telerik
@Hector
If you watch your windows processes you can see "csc.exe" ticking away. Basically yeah asp is compiling all the widgets and things on the page. Subsiquent requests (as you can see) don't get this hit. Anytime csc seems to be running the entire site just in unresponsive until it completes. We have lots of pages with lots of concurrent users so when we recycle god I WISH it was only 20 seconds, we're talking maybe 5 minutes to come back. It's like all the pages or requests go into a queue to be popped off. If I recycle the same site in the middle of the night when there's nobody on it, we're back down to the 20-30 seconds....but then it's per page. So if I go somewhere else, it's another 20-30 seconds.
There's basically nothing you can do, the more customization\widgets on a page, the worse it gets. They have a precompilation tool which doesn't at all help with loadtimes on the frontend, however it does seem to work on speeding up the backend requests.
Nothing Junior recommends will make any real *noticable* difference.
Basically, you need to stop it from going idle.
In addition to the IIS Initialization module, you have 2 main paths...
1. Use an external "ping" service, to access a specific page every 10mins (or whatever)
There are plenty of these services available on the internet.
2. Use an internal "ping" IIS task to access the website every 10 mins (or whatever)
Personally, I took the 2nd path for our sites (still on IIS 7.5) and the sites are always responsive... but your mileage may vary.
There are lots of examples that can be Googled, but perhaps this might give you some pointers...
www.codeproject.com/.../Keep-Your-Website-Alive-Don-t-Let-IIS-Recycle-Your