1

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

对于大多数浏览器(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
    }
};
4

1 回答 1

1

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

将连接数限制为 2 后,问题不再出现。其他浏览器似乎有更高的限制,尽管我将这些限制为 4 以防万一。

此外,并发消息的数量是在任何给定时间进行中的消息数量。这以前是无限的,这让 Internet Explorer 非常难过 :-(

于 2012-05-02T14:40:36.720 回答