28672

ASP.NET website very slow Internet Explorer 10

Question:

<strong>The scenario</strong>

I have an ASP.NET website that works perfectly in Internet explorer 8, but is extremely slow in Internet Explorer 10.

<strong>The Problem</strong>

In Internet Explorer 8 a postback or button click event takes about 1,5 seconds to complete. In internet explorer 10 it takes a minimum of 30 seconds and sometimes over 60 seconds.

<strong>What I already tried</strong>

1.Installed a hotfix from Microsoft's website to update the browser definition files (<a href="http://support.microsoft.com/kb/2836939" rel="nofollow">http://support.microsoft.com/kb/2836939</a>)

<ol start="2"><li>

I tried forcing IE8 and IE9 Compatibility Mode in web.config or adding HTTP Header in IIS or directly inside html pages.

</li> <li>

Tried changing the application pool in ISS on the server(Windows server 2008 R2).

</li> <li>

Installing .NET framework 4.0 on client machine

</li> </ol>

<strong>The Real question</strong>

Could ASP.NET still be having issues detecting Internet Explorer 10 as a browser, or could the slow response time between the browsers be a problem on the web server(browser definition files etc.)?

Answer1:

When using Internet Explorer to browse a page that contains an UpdatePanel, there is a delay (often anywhere between 10 seconds and 45 seconds or more) after clicking a page element that initiates an async postback. The delay is not experienced when using browsers other than Internet Explorer.

The PageRequestManager's _destroyTree method iterates through the DOM elements inside of the UpdatePanel prior to initiating an async postback in order to dispose of DOM elements. The _destroyTree method's specific implementation is very slow in Internet Explorer when working with a large DOM tree under some conditions due to the way that Internet Explorer's HTML viewer (mshtml.dll) stores DOM elements in memory.

Add the JavaScript below immediately before the closing </body> element of the page experiencing the delay.

<script language="javascript" type="text/javascript"> function disposeTree(sender, args) { var elements = args.get_panelsUpdating(); for (var i = elements.length - 1; i >= 0; i--) { var element = elements[i]; var allnodes = element.getElementsByTagName('*'), length = allnodes.length; var nodes = new Array(length) for (var k = 0; k < length; k++) { nodes[k] = allnodes[k]; } for (var j = 0, l = nodes.length; j < l; j++) { var node = nodes[j]; if (node.nodeType === 1) { if (node.dispose && typeof (node.dispose) === "function") { node.dispose(); } else if (node.control && typeof (node.control.dispose) === "function") { node.control.dispose(); } var behaviors = node._behaviors; if (behaviors) { behaviors = Array.apply(null, behaviors); for (var k = behaviors.length - 1; k >= 0; k--) { behaviors[k].dispose(); } } } } element.innerHTML = ""; } } Sys.WebForms.PageRequestManager.getInstance().add_pageLoading(disposeTree); </script>

Recommend

  • Microsoft graph and Azure Ad user authentication
  • Microsoft graph and Azure Ad user authentication
  • Prepared statement works for INSERT but not for SELECT
  • ERROR_USER_UNAUTHORIZED when deploy to IIS 7.5 when using IIS manager user
  • How do I check assembly output of Java code?
  • How to remove default command line arguments provided by Eclipse?
  • Get the computer user name in a web application
  • white-space: pre-wrap not working in IE
  • Absolutely positioned pseudo element inside table cell does not cover parent in IE9/10
  • How to best manage SMTP clients
  • Unicorn and Rails eat up 2x MySQL connections
  • Add Windows Feature from C#
  • Javascript Array, Object, Date not defined
  • WordPress > setting permalink option via script buggy?
  • How to add closing tag for canvas in three js rendered Canvas?
  • Primefaces lazy datascroller calling load twice
  • How to access meteor package name inside package?
  • Rest Services conventions
  • SonarQube: Cannot deactivate rule with missing quality profile
  • ASP.NET MVC 2 Preview 2 - display directory list rather than home/index
  • Do I need to seed any random number generator before using EVP_PKEY_keygen of OpenSSL?
  • JqueryMobile Popup menu is not working
  • saving file generated by TCPDF
  • How to view images from protected folder with php?
  • Textfile Structure (tables)
  • Change Inet root folder for iis 7
  • Repeat a vertical line on every page in Report Builder / SSRS
  • C# - Serializing and deserializing static member
  • Sending data from AppleScript to FileMaker records
  • vba code to select only visible cells in specific column except heading
  • Python - Map / Reduce - How do I read JSON specific field in using DISCO count words example
  • Warning: Can't call setState (or forceUpdate) on an unmounted component
  • bootstrap to use multiple ng-app
  • How to get icons for entities from eclipse?
  • How to include full .NET prerequisite for Wix Burn installer
  • Proper way to use connect-multiparty with express.js?
  • Load html files in TinyMce
  • Turn off referential integrity in Derby? is it possible?
  • Is it possible to post an object from jquery to bottle.py?
  • JaxB to read class hierarchy