首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ASP.NET网站非常慢的10

ASP.NET网站非常慢的10
EN

Stack Overflow用户
提问于 2014-09-16 10:30:55
回答 1查看 1.1K关注 0票数 1

场景

我有一个ASP.NET网站,它在Internet 8中工作得很好,但是在Internet 10中非常慢。

问题

在8中,回发或按钮单击事件大约需要1,5秒才能完成。在internet 10中,它至少需要30秒,有时超过60秒。

我已经尝试过的

1.安装了微软网站的修补程序,以更新浏览器定义文件(http://support.microsoft.com/kb/2836939)

  1. 我尝试过在IE8和IE9兼容模式下强制web.config,或者在IIS中添加Header,或者直接在html页面中添加Header。
  2. 尝试更改服务器上ISS中的应用程序池(Windows 2008 R2)。
  3. 在客户端计算机上安装.NET框架4.0

实数问题

ASP.NET是否仍然存在检测Internet 10作为浏览器的问题,或者浏览器之间响应时间的缓慢是否会成为web服务器(浏览器定义文件等)上的一个问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-16 11:05:46

当使用Internet浏览包含UpdatePanel的页面时,在单击启动异步回发的页面元素后会出现延迟(通常在10秒到45秒或更长的时间内)。当使用Internet Explorer以外的浏览器时,不会出现延迟。

PageRequestManager的_destroyTree方法在启动异步回发之前遍历UpdatePanel中的DOM元素,以便处理DOM元素。在Internet中,由于Internet的HTML (mshtml.dll)在内存中存储DOM元素的方式,在某些条件下使用大型DOM树时,Internet方法的具体实现非常慢。

将下面的JavaScript添加到页面关闭</body>元素之前,该页面正处于延迟状态。

代码语言:javascript
复制
<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>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25866439

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档