Performance Issues with Personal Blog

Oct 14, 2016 at 5:21 PM
I am very new to but love your blog engine and I am currently using it at as a personal blog. Whenever i go to the website, it takes a long time for it to load. When i go to PageSpeed Insights and run a quick query, i get something stating that i need to "Eliminate render-blocking JavaScript and CSS in above-the-fold content" followed by a list of several blogengine java script.. but in all honesty i have no clue on how to do this. This website also suggest to minify javascript which i did and found some improvement. But other than this, and the AddThis widget...the page is very slow during initial load. I know I am being vague but it is hard for a beginner like me to know what kind of information can be helpful to provide in this post. I will try to disable all and see if I can run the website as it comes from scratch and see if I notice a difference. I am hosting with Go daddy. I am also thinking to publish another blog to a subdomain or something like that --to see if it performs better. I am using SQL instead of XML and this is working fine. The only thing i can think of is that perhaps my logo.png image is not optimize enough and it is causing delays in displaying the page. I was also thinking about moving all the javascript on master page to footer instead of header...but some of this might need to be in the header, im just not sure. Love your blogengine though and Im thinking what i will figure it out. I just deed a little help :) Thanks!
Oct 14, 2016 at 7:02 PM
This isn't a problem with code as much as the server settings in IIS. Check your application pool. is it set to on-demand or always running? Set it to always running if that's an option.
Oct 15, 2016 at 1:06 AM
Thank you so much for taking of your time to reply. I called godaddy as my Plesk account had a very limited IIS user interface. They said that the "on demand" vs "always running setting" is not something they can change as it would affect other users. Given, I did not push too much, but i think in this case, I'm thinking that Im stuck as this might be related to a limitation of having a shared hosting plan VS dedicated hosting. I honestly don't have tons of follwers lol. But once this domain hosting expires, I will seek other hosting companies. Thanks much for taking the time to respond.
Oct 19, 2016 at 9:57 PM
the default is usually about 20 minutes before the app pool process dies down. Set up a monitor or something that pings the site every 10 minutes or so and looks for content from your page. That way the application pool stays running and the server doesn't have to recompile when it receives the first request.
Oct 20, 2016 at 2:37 PM
ok this is a beautiful idea. Thanks a million. Will report improvements.
Oct 21, 2016 at 11:30 PM
Edited Oct 21, 2016 at 11:40 PM
I literally slightly modified my Global.asax file to look like the one below. I just added the "private static void _SetupRefreshJob() " to it and inserted the missing Namespaces. I understand a little bit of what is doing but to be honest not even 50% sure lol. My website is a little faster now, but since I have not debugged /study what this is actually doing, i can't guarantee that this was indeed what fixed my slowness, or if its just a sugar pill effect I am having. I will take time to study it and will monitor the website and see if it remains fast. I must say that i think i still might have to call SetupRefreshJob() in my App_Start file which i think is called BlogEngineConfig.cs ... but again I am not sure what Im taking about.
<%@ Application Language="C#" %>
<%@ Import Namespace="BlogEngine.NET.App_Start" %>
<%@ Import Namespace="System.Threading" %>
<%@ Import Namespace="System.Net" %>

<script RunAt="server">
    void Application_BeginRequest(object sender, EventArgs e)
        var app = (HttpApplication)sender;

    void Application_PreRequestHandlerExecute(object sender, EventArgs e)
        BlogEngineConfig.SetCulture(sender, e);

    private static void _SetupRefreshJob()

        //remove a previous job
        Action remove = HttpContext.Current.Cache["Refresh"] as Action;
        if (remove is Action)

        //get the worker
        Action work = () =>
            while (true)
                //TODO: Refresh Code (Explained in a moment)
                WebClient refresh = new WebClient();
                    refresh.UploadString("", string.Empty);
                catch (Exception ex)
        work.BeginInvoke(null, null);

        //add this job to the cache
            (s, o, r) => { _SetupRefreshJob(); }