Tôi đang làm việc trên một ứng dụng ASP.Net và làm việc để thêm một số Ajax vào nó để tăng tốc độ các khu vực nhất định. Khu vực đầu tiên mà tôi đang tập trung là khu vực tham dự để giáo viên báo cáo sự tham gia (và một số dữ liệu khác) về trẻ em. Điều này cần phải được nhanh chóng.UpdatePanel Slowness trong IE
Tôi đã tạo thiết lập kiểm soát kép nơi người dùng nhấp vào biểu tượng và thông qua Javascript và Jquery tôi bật lên điều khiển thứ hai. Sau đó, tôi sử dụng __doPostBack() để làm mới điều khiển bật lên để tải tất cả dữ liệu có liên quan.
Dưới đây là một đoạn video nhỏ để hiển thị cách hoạt động: http://www.screencast.com/users/cyberjared/folders/Jing/media/32ef7c22-fe82-4b60-a74a-9a37ab625f1f (: 21 và bỏ qua nền âm thanh).
Tốc độ chậm hơn so với 2-3 giây trong Firefox và Chrome cho mỗi lần "bật lên", nhưng hoàn toàn không hoạt động trong IE, mất 7-8 giây mỗi lần bật lên và tải. Và điều đó sẽ bỏ qua bất kỳ lúc nào cần thiết để lưu dữ liệu sau khi dữ liệu được thay đổi.
Đây là javascript để xử lý các cửa sổ pop-up:
function showAttendMenu(callingControl, guid) {
var myPnl = $get('" + this.MyPnl.ClientID + @"')
if(myPnl) {
var displayIDFld = $get('" + this.AttendanceFld.ClientID + @"');
var myStyle = myPnl.style;
if(myStyle.display == 'block' && (guid== '' || guid == displayIDFld.value)) {
myStyle.display = 'none';
} else {
// Get a reference to the PageRequestManager.
var prm = Sys.WebForms.PageRequestManager.getInstance();
// Unblock the form when a partial postback ends.
prm.add_endRequest(function() {
$('#" + this.MyPnl.ClientID + @"').unblock({ fadeOut: 0});
});
var domEl = Sys.UI.DomElement;
//Move it into position
var loc = domEl.getLocation(callingControl);
var width = domEl.getBounds(callingControl).width;
domEl.setLocation(myPnl, loc.x + width, loc.y - 200);
//Show it and block it until we finish loading the data
myStyle.display = 'block';
$('#" + this.MyPnl.ClientID + @"').block({ message: null, overlayCSS: { backgroundColor:'#fff', opacity: '0.7'} });
//Load the data
if(guid != '') { displayIDFld.value = guid; }
__doPostBack('" + UpdatePanel1.ClientID + @"','');
}
}}
Trước tiên, tôi không hiểu tại sao các __doPostBack() giới thiệu như một sự chậm trễ trong IE. Nếu tôi thực hiện điều đó và prm.add_endRequest, nó rất nhanh khi không có postback nào xảy ra.
Thứ hai, tôi cần một cách để bật lên kiểm soát này và làm mới dữ liệu để dữ liệu vẫn tương tác. Tôi không kết hôn với một UpdatePanel, nhưng tôi đã không thể tìm ra cách để làm điều đó với một dịch vụ Web/phương pháp trang tĩnh. Như bạn có thể thấy điều khiển này được tải nhiều lần trên cùng một trang để kích thước trang và tốc độ tải xuống là một vấn đề.
Tôi đánh giá cao bất kỳ ý tưởng nào?
Chỉnh sửa: Cũng giống như trong IE 6 hoặc 7. Tôi nghĩ rằng nó phải liên quan đến việc xử lý của UpdatePanel của IE, vì cùng một mã nhanh hơn nhiều trong FF và Chrome.
Được chuyển sang sử dụng Jquery và PageMethod và nó hiện nhanh như chớp trong tất cả các trình duyệt, do đó, đó là UpdatePanel và IE – Jared
Sử dụng webmethods trong một số trường hợp có lợi hơn bảng cập nhật eg.- Xem trạng thái có trọng số và chúng tôi không cần để gửi ViewState trong tiêu đề một lần nữa và một lần nữa. –