ASP.NET website very slow Internet Explorer 10

北城以北 提交于 2019-12-13 18:37:15

问题


The scenario

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

The Problem

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.

What I already tried

1.Installed a hotfix from Microsoft's website to update the browser definition files (http://support.microsoft.com/kb/2836939)

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

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

  3. Installing .NET framework 4.0 on client machine

The Real question

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.)?


回答1:


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>


来源:https://stackoverflow.com/questions/25866439/asp-net-website-very-slow-internet-explorer-10

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!