2012-01-13 128 views
0

嗨每個人我正在使用C#在asp.net中構建我的第一個MVC 3網站我在網站的速度方面遇到了一些麻煩,因爲它需要超過45秒才能展開或收縮顯示數據庫的表。我如何加快我的MVC asp.net網站?

我已經包含了我對其中有我的jQuery它

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

@{ 
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秒是荒謬的。感謝您的時間。 乾杯, James

+0

你是什麼意思「展開/合同」? MVC代碼只會影響頁面加載速度,而不會影響任何JQuery UI活動。 – Lazarus 2012-01-13 16:53:51

+0

當你點擊說投資區的細胞時,該投資區的孩子們應該擴大或縮小顯示或隱藏主要項目經理的水療中心等......如果我含糊不清,我很抱歉,因爲這是我的第一個問題仍然在努力尋找正確的問題,並感謝您的快速響應! – Goldentp 2012-01-13 17:11:16

+0

有沒有人認爲它可能是jQuery調用的切換功能,因爲這是網站真正減慢速度的部分。是否有另一種方式讓桌子擴大或縮小投資區域的孩子,而不會像現在這樣慢下來? – Goldentp 2012-01-13 17:21:58

回答

1

啓動sql profiler/sql trace並檢查您在創建頁面的單個http請求期間正在執行多少查詢。查詢通常是導致性能問題的原因之一。單純渲染視圖幾乎不可能花費太多時間。

+0

我已經啓動了SQL分析器並開始了一個新的跟蹤,但究竟是什麼我在尋找?我應該尋找很長的跟蹤時間或大量的讀寫操作嗎?我也想感謝您的快速響應! – Goldentp 2012-01-13 17:31:46

+0

在這種情況下尋找大量的讀取。爲獲取頁面的所有數據而發佈的查詢數量是多少?特別是,如果您使用的是ORM,那麼您可能會選擇n + 1個問題。 – pkmiec 2012-01-13 17:45:36

0

可能會發生這樣的情況,即您嘗試在表格中顯示的記錄過多。你應該使用分頁。看看datatables.net這是一個不錯的jquery插件,可以幫助你進行分頁。確保您使用的是server side processing。當然,你將不得不改變你的代碼(服務器端和客戶端)。

+1

我無法真正使用分頁,因爲這個網站需要快速瀏覽當前的項目和投資領域。這就是爲什麼我使用切換,以便所有信息都在一個頁面上,以便於受損技術輕鬆訪問。謝謝你的快速回應! – Goldentp 2012-01-13 17:42:48

+0

您在頁面上顯示多少行?另外,您可以發佈您在服務器端執行的數據庫查詢嗎? – 2012-01-13 17:56:55

+0

它看起來像它沒有任何關係的SQL查詢我絕對認爲這是切換功能我只是通過改變切換到slideToggle改進了20秒的速度 – Goldentp 2012-01-13 19:31:24

0

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

我同意處理分頁的答案,這是一個很好的選擇,可以減少一次提交的數據量,也可以減少同時顯示的元素數量。 Javascript的執行不是即時的,而且在舊的瀏覽器上它確實很慢。