簡體   English   中英

如何加快我的MVC asp.net網站的速度?

[英]How can I speed up my MVC asp.net website?

大家好,我正在asp.net上使用C#構建的第一個MVC 3網站上,我在網站速度方面遇到了一些麻煩,因為它需要超過45秒的時間來擴展或收縮顯示數據庫的表。

我已經為reportTemplate包含了我的jquery的代碼

我一直在嘗試找出如何使用緩存,但是當管理人員需要最新數據時,我擔心數據不會是最新的

@{
ViewBag.Title = "ReportTemplate";
}

<script language="javascript" type="text/javascript">
$(document).ready(function () {

    toggle = function (className) {
        $('.' + className).toggle('fast');
    }


});

</script>

<h2>ReportTemplate</h2>

<p>
@Html.ActionLink("Create New", "Create")    
</p>
<table>
<tr>
    <th>
        INVESTMENT AREA
    </th>
    <th>
        MAJOR PROGRAM
    </th>
    <th>
        MANAGER
    </th>
    <th>
        PROJECT
    </th> 
    <th>
        SPA
    </th>
    <th>
        PA
    </th>                                 
</tr>

@{
string investment_area = "";
string major_program = "";
string manager = "";
string project = "";
string spa = ""; 
string pa = "";
string iaClass = "";
string mpClass = "";
string manClass = "";
string pjClass = "";
string spaClass = "";
string paClass = "";
}
    @foreach (var item in Model)
{
iaClass = item.investment_area.Substring(0, 2);
mpClass = item.major_program;
manClass = item.manager;
pjClass = item.project;
spaClass = item.spa;
paClass = item.pa;

    if (investment_area != item.investment_area)
{

<tr>        
  <td class = "ndeTable ui-widget-header pointer border" onclick="toggle('@iaClass')" colspan="6">
        @item.investment_area
    </td>
</tr>

}
investment_area = item.investment_area;

if (major_program != item.major_program)
{

<tr class="@iaClass">
<td style = "width :200px"></td>
    <td class = "ndeTable pointer border" onclick="toggle('@mpClass')" colspan="5">

    @item.major_program

    </td>
</tr>    
}
major_program = item.major_program;

if (manager != item.manager)
{                
<tr class = "@iaClass @mpClass">
<td></td>
<td style = "width : 100px"></td>
    <td class = "ndeTable pointer border" onclick="toggle('@manClass')" colspan="4">    
    @item.manager
    </td>                
</tr>
}
manager = item.manager;

if (project != item.project)
{
<tr class = "@iaClass @mpClass @manClass">

<td></td>
<td></td>
<td style = "width : 200px"></td>

   <td class = "ndeTable pointer border" onclick = "toggle('@pjClass')" colspan="3">
   @item.project
   </td>
</tr>
}
project = item.project;

if (spa != item.spa)
{
<tr class = "@iaClass @mpClass @manClass @pjClass">

<td></td>
<td></td>
<td></td>
<td style = "width : 325px"></td>

    <td class = "ndeTable pointer border" onclick = "toggle('@spaClass')" colspan = "2">
    @item.spa
    </td>
</tr>
}
spa = item.spa;


<tr class = "@iaClass @mpClass @manClass @pjClass @spaClass">
<td></td>
<td></td>
<td></td>
<td></td>
<td style = "width: 200px"></td>
    <td class = "ndeTable pointer border" onclick = "toggle('@paClass')" colspan = "1">
    @item.pa
    </td>           
</tr>

pa = item.pa;
}
</table>

在此期間,我將繼續嘗試優化代碼,但是如果有人可以使用任何技巧或竅門,我將非常感激,因為在過去的幾天里這一直困擾着我,而對於小型數據庫而言,這是45秒鍾,這太荒謬了。 感謝您的時間。 干杯,詹姆斯

啟動sql profiler / sql跟蹤,並檢查在創建頁面的單個http請求期間您正在執行多少查詢。 查詢通常是性能問題的原因之一。 僅渲染視圖要花費這么多時間幾乎是不可能的。

您可能會試圖在表中顯示太多記錄。 您應該使用分頁。 看看datatables.net這是一個不錯的jquery插件,它將幫助您進行分頁。 確保您正在使用服務器端處理 當然,您將不得不在代碼(服務器端和客戶端)中進行很多更改。

您正在使用哪個瀏覽器? 較舊的瀏覽器不具有較新版本的Javascript性能,並且由於您可能同時暴露或隱藏的面板數量無疑是造成問題的原因。

我同意有關分頁的答案,這將是一個不錯的選擇,可以減少一次性顯示的數據量,或者必須減少同時顯示的元素數量。 Javascript執行不是即時的,在舊版瀏覽器中確實很慢。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM