我正在开发一个大量使用 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
}
};