Cấp bậc tác giả:

DOTNET

Một cách để cải thiện hiệu suất ứng dụng Web đáng kể

Được viết bởi webmaster ngày 28/09/2013 lúc 01:15 AM
Trong thời gian qua, tôi đã cố gắng cải thiện hiệu suất ứng dụng web. Tôi đã phân tích ứng dụng trong nhiều cách khác nhau. Tôi cũng sử dụng các thông số khác nhau và đã định hình cho ứng dụng sử dụng một số thông số như Ants, thông số .NET,...
  • 0
  • 8287

Một cách để cải thiện hiệu suất ứng dụng Web đáng kể

Trong thời gian qua, tôi đã cố gắng cải thiện hiệu suất ứng dụng web. Tôi đã phân tích ứng dụng trong nhiều cách khác nhau. Tôi cũng sử dụng các thông số khác nhau và đã định hình cho ứng dụng sử dụng một số thông số như Ants, thông số .NET,... Trong phân tích, tôi tìm thấy một vài vấn đề mà tôi sửa chữa nhưng đã không có cải thiện rõ.

Sau đó tôi nghĩ, mã máy chủ của tôi là đủ tốt, nhưng vẫn còn mất nhiều thời gian để tải trang. Mặc dù tôi đã sử dụng IIS nén để giảm kích thước trang..

Trên thực tế, ứng dụng của tôi là ứng dụng RIA và tôi đang sử dụng điều khiển ajaxtoolkit vô trong ứng dụng. Tôi đã phân tích ứng dụng sử dụng firebug và có rất nhiều scriptresource.axd và WebResource.axd được tải về.

Vì vậy, tôi nghĩ rằng nếu chúng ta có thể kết hợp các tập tin vào một duy nhất, nó sẽ tăng hiệu suất ứng dụng hiệu quá cho ứng dụng.

Đầu tiên, tôi cố gắng làm việc đó một mình. Bạn chỉ cần có .NET 3.5 SP1.

Vì vậy, nếu bạn đang sử dụng framework phiên bản 3.5, nâng cấp nó lên SP1 và tận hưởng tính năng này.

Vì vậy, trong ứng dụng mẫu, tôi có một mở rộng Calender. Chúng ta hãy xem có bao nhiêu yêu cầu được có sử dụng firebug.

uncominedrequests.png

Chúng ta có thể thấy hiện có 14 yêu cầu trên PageLoad. Tôi có thể làm giảm số lượng yêu cầu.

Vì vậy, để sử dụng, trước tiên bạn cần phải tải về một ScriptReferenceProfiler . Bạn có thể tải về từ đây.

Bây giờ thêm reference  trong dự án và thêm vào trong trang của bạn.

Đầu tiên đăng ký nó:

<%@ Register Assembly="ScriptReferenceProfiler" Namespace="ScriptReferenceProfiler"
    TagPrefix="cc2" %>

và thêm nó như điều khiển:

<cc2:ScriptReferenceProfiler ID="ScriptReferenceProfiler1" runat="server" >
</cc2:ScriptReferenceProfiler>

Bây giờ khi bạn chạy ứng dụng, bạn sẽ thấy trang.

Bây giờ sao chép tất cả các liên kết và đặt nó trong thẻ CompositSctript như:

<asp:ScriptManager ID="ScriptManager1" runat="server">
            <CompositeScript>
                <Scripts>
                    <asp:ScriptReference name="MicrosoftAjax.js"/>
               <asp:ScriptReference name="MicrosoftAjaxWebForms.js"/>
               <asp:ScriptReference name="AjaxControlToolkit.Common.Common.js" 
assembly="AjaxControlToolkit, Version=3.0.30930.28736, 
Culture=neutral, PublicKeyToken=28f01b0e84b6d53e"/>
               <asp:ScriptReference 
name="AjaxControlToolkit.Common.DateTime.js" 
assembly="AjaxControlToolkit, Version=3.0.30930.28736, 
Culture=neutral, PublicKeyToken=28f01b0e84b6d53e"/>
               <asp:ScriptReference 
name="AjaxControlToolkit.Compat.Timer.Timer.js" 
assembly="AjaxControlToolkit, Version=3.0.30930.28736, 
Culture=neutral, PublicKeyToken=28f01b0e84b6d53e"/>
               <asp:ScriptReference 
name="AjaxControlToolkit.Animation.Animations.js" 
assembly="AjaxControlToolkit, Version=3.0.30930.28736, 
Culture=neutral, PublicKeyToken=28f01b0e84b6d53e"/>
               <asp:ScriptReference 
name="AjaxControlToolkit.ExtenderBase.BaseScripts.js" 
assembly="AjaxControlToolkit, Version=3.0.30930.28736, 
Culture=neutral, PublicKeyToken=28f01b0e84b6d53e"/>
               <asp:ScriptReference 
name="AjaxControlToolkit.Animation.AnimationBehavior.js" 
assembly="AjaxControlToolkit, Version=3.0.30930.28736, 
Culture=neutral, PublicKeyToken=28f01b0e84b6d53e"/>
               <asp:ScriptReference 
name="AjaxControlToolkit.PopupExtender.PopupBehavior.js" 
assembly="AjaxControlToolkit, Version=3.0.30930.28736, 
Culture=neutral, PublicKeyToken=28f01b0e84b6d53e"/>
               <asp:ScriptReference 
name="AjaxControlToolkit.Common.Threading.js" 
assembly="AjaxControlToolkit, Version=3.0.30930.28736, 
Culture=neutral, PublicKeyToken=28f01b0e84b6d53e"/>
               <asp:ScriptReference 
name="AjaxControlToolkit.Calendar.CalendarBehavior.js" 
assembly="AjaxControlToolkit, Version=3.0.30930.28736, 
Culture=neutral, PublicKeyToken=28f01b0e84b6d53e"/>
                </Scripts>
            </CompositeScript>
        </asp:ScriptManager>

Bây giờ hãy chạy ứng dụng. Kiểm tra firebug.

combined.png

Ở đây chúng ta có thể thấy con số này đã giảm đáng kể. Nó chỉ là 4.

Nhưng đây là một ví dụ và nó làm việc tốt. Nhưng khi bạn cố gắng trong ứng dụng thực tế, bạn có thể phải đối mặt với một số vấn đề. 

Vấn đề : URL nguồn tài nguyên không thể dài hơn 1024 ký tự. Nếu sử dụng một CompositeScriptReference, giảm số lượng các ScriptReferences nó chứa, hay kết hợp chúng thành một tập tin tĩnh duy nhất và thiết lập thuộc tính đường dẫn đến vị trí của nó.
Vì vậy, đầu tiên, tôi không thể hiểu nó và cố gắng để tìm trên Google. Nhưng đâu đó tôi thấy đó là vấn đề và nó sẽ được chăm sóc hoặc xử lý trong thời gian tới. Nhưng trong quá trình phân tích, tôi tìm thấy một giải pháp.

Vấn đề là độ dài URL nhận được cao hơn so với 1024. Vì vậy, người ta phải giảm số lượng các tập tin bị kết hợp. Vì vậy, bạn có thể có nhiều hơn một nhóm các tập tin và đặt nó trong script tag tổng hợp khác nhau.

Tôi đã thêm quản lý ủy quyềnípcript và thêm compositscript tag nó ở trong đó và dán gần một nửa cácípcript trong đó. Và nó giải quyết vấn đề như:

 <asp:ScriptManager ID="ScriptManager1" runat="server">
            <CompositeScript>
                <Scripts>
                    <asp:ScriptReference name="MicrosoftAjax.js"/>
               <asp:ScriptReference name="MicrosoftAjaxWebForms.js"/>
               <asp:ScriptReference name="AjaxControlToolkit.Common.Common.js" 
assembly="AjaxControlToolkit, Version=3.0.30930.28736, 
Culture=neutral, PublicKeyToken=28f01b0e84b6d53e"/>
               <asp:ScriptReference 
name="AjaxControlToolkit.Common.DateTime.js" 
assembly="AjaxControlToolkit, Version=3.0.30930.28736, 
Culture=neutral, PublicKeyToken=28f01b0e84b6d53e"/>
               <asp:ScriptReference 
name="AjaxControlToolkit.Compat.Timer.Timer.js" 
assembly="AjaxControlToolkit, Version=3.0.30930.28736, 
Culture=neutral, PublicKeyToken=28f01b0e84b6d53e"/>
                </Scripts>
            </CompositeScript>
        </asp:ScriptManager>
        <asp:ScriptManagerProxy ID="ScriptManagerProxy1" runat="server">
            <CompositeScript>
                <Scripts>
                <asp:ScriptReference name="AjaxControlToolkit.Animation.Animations.js" 
assembly="AjaxControlToolkit, Version=3.0.30930.28736, 
Culture=neutral, PublicKeyToken=28f01b0e84b6d53e"/>
               <asp:ScriptReference 
name="AjaxControlToolkit.ExtenderBase.BaseScripts.js" 
assembly="AjaxControlToolkit, Version=3.0.30930.28736, 
Culture=neutral, PublicKeyToken=28f01b0e84b6d53e"/>
               <asp:ScriptReference 
name="AjaxControlToolkit.Animation.AnimationBehavior.js" 
assembly="AjaxControlToolkit, Version=3.0.30930.28736, 
Culture=neutral, PublicKeyToken=28f01b0e84b6d53e"/>
               <asp:ScriptReference 
name="AjaxControlToolkit.PopupExtender.PopupBehavior.js" 
assembly="AjaxControlToolkit, Version=3.0.30930.28736, 
Culture=neutral, PublicKeyToken=28f01b0e84b6d53e"/>
               <asp:ScriptReference 
name="AjaxControlToolkit.Common.Threading.js" 
assembly="AjaxControlToolkit, Version=3.0.30930.28736, 
Culture=neutral, PublicKeyToken=28f01b0e84b6d53e"/>
               <asp:ScriptReference 
name="AjaxControlToolkit.Calendar.CalendarBehavior.js" 
assembly="AjaxControlToolkit, Version=3.0.30930.28736, 
Culture=neutral, PublicKeyToken=28f01b0e84b6d53e"/>
                </Scripts>
            </CompositeScript>
        </asp:ScriptManagerProxy>

Bây giờ nó sẽ kết hợp các tập tin tài nguyên trong hai tập tin. Bạn có thể thêm thẻ CompositScript nếu cần thiết.

Nguồn bài viết: DOTNET.VN

BÌNH LUẬN BÀI VIẾT

Bài viết mới nhất

LIKE BOX

Bài viết được xem nhiều nhất

HỌC HTML