Search code examples
asp.netperformancekenticomicrosoft-ajax

Managing/removing unnecessary scripts in live Kentico site


We're building a Kentico 8.2 site using ASPX+portal model. Looking at the rendered HTML on my live site I can see a lot of unnecessary Javascript that Kentico has dumped into my page. What's more this is occurring at the top of my page at the top of the form element.

For example, it's rendering the ASP.NET __doPostBack JS function even though I'm not using any controls that require it. Other scripts are being added as WebResource.axd and ScriptResource.axd includes.

At a glance it would seem these scripts constitute the Microsoft AJAX framework used with UpdatePanel etc. My assumption is that they are there to add portal manager functionality when using the page in the Kentico UI. Presumably they are also used with certain built-in web parts.

However, I am only using custom web parts on my live site so all these scripts are doing nothing and are just slowing down my page and causing poor performance testing results.

I've tried hiding the <ajaxToolkit:ToolkitScriptManager /> and <cms:CMSPortalManager /> controls on my master page when rendering the live site, but this causes templates that have a <cms:CMSWebPartZone /> to break.

Does anyone know how to ensure this bloat is removed when not required? Or at the very least cause these scripts to be rendered at the end of the page so they don't interfere with performance too much?


Solution

  • Unfortunately, building sites within Kentico using ASPX and ASPX+Portal Pages will automatically generate additional markup such as __doPostBack, WebResource.axd and ScriptResource.axd.

    I wouldn't recommend removing any of the default code in your Masterpage. This will cause things to break (as you've experienced).

    However, having this markup in place shouldn't cause a massive issue in page performance. Understandably, this isn't ideal.

    What I do to lessen the hit is the following:

    • Disable the ViewState wherever possible. For example, either at Page Template or Webpart/User control level.
    • Move the ViewState to the bottom of the page (in Kentico Settings), so the page is less "top heavy".
    • Ensure you are caching everything you can. For example, site furniture used by your webparts and templates (images/js etc) at IIS level and at Kentico level using their API.

    Reading this article from the Kentico documentation provides some more information in greater depth: Optimizing website performance

    If you really want "full control" over the HTML rendered, Kentico does allow you to create templates using MVC. But this won't give you the flexibility to modify Page Templates by moving around web parts within the CMS Administration. I presume you have chosen the Portal Page approach for this very reason.

    I hope this helps.