刷新后,Internet Explorer 9中的Ajax会变慢

时间:2012-04-23 10:00:12

标签: javascript html ajax internet-explorer-9

我正在开发一个客户端Web应用程序,它大量使用JavaScript和Ajax来提供所需的功能。

对于大多数浏览器(Chrome,Firefox,...)而言,这不是问题,但在Internet Explorer中,性能是一个主要问题。

最初加载页面只需不到一秒钟,即使在Internet Explorer上也是如此。但刷新页面后,加载和显示页面可能需要1到20秒的时间。

由于应用程序被分成多个文件,因此很难发布代码。我只能解释预期的行为。

应用程序初始化两个内容容器,一个用于静态内容,另一个用于动态内容。每个内容容器都通过Ajax填充,并通过innerHTML属性影响DOM元素。

首次构建页面所需的时间不到一秒钟。随后的刷新需要更长的时间。

页面的初始加载和页面刷新之间有什么变化来解释这种巨大的性能下降?我是否需要在卸载页面时取消初始化某些内容?

Communication.request = function (method, target, async, data, callback) {
    var types = ['string', 'string', 'boolean', 'null', 'null'];                // Parameter types

    if (data) {                                                                 // Data was provided
        types[3] = 'string';                                                    // Data must be a string
    }

    if (callback) {                                                             // Callback was provided
        types[4] = 'function';                                                  // Callback must be a function
    }

    if (Utils.hasParams(arguments, types)) {                                    // All the required parameters were provided and of the right type
        var request = new XMLHttpRequest();                                     // Create a new request

        request.open(method, target, async);                                    // Open the request

        if (callback) {                                                         // Callback was provided
            request.handleCallback(callback);                                   // Register the callback
        }

        if (data) {                                                             // Data was provided
            var contentType = 'application/x-www-form-urlencoded';              // Prepare the content type

            request.setRequestHeader('Content-Type', contentType);              // Add a content type request header
        }

        request.send(data);                                                     // Send the request
    }
};

1 个答案:

答案 0 :(得分:1)

问题似乎与并发连接数量有关。根据Web服务器的连接/类型,Internet Explorer中限制为2个或4个并发连接。

在将连接数量限制为2之后,问题就不复存在了。其他浏览器似乎有更高的限制,但为了以防万一我限制为4。

此外,并发消息量是指在任何给定时间内正在传输的消息量。这在以前是无限的,这使得Internet Explorer非常难过: - (