2012-01-13 13 views
0

こんにちは皆私はasp.netでC#で構築された最初のMVC 3のWebサイトで作業しています。データベースを表示するテーブルを展開または縮小するのに45秒以上かかるので、ウェブサイトの速度に問題があります。MVC asp.netのWebサイトをどのように高速化できますか?

私はキャッシュを使用する方法を理解しようとしているが、私は管理者が必要なときにデータが最新でないことを心配して、それに

を私の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

+0

投資領域のセルをクリックすると、その投資領域の子供たちは、主要プログラムマネージャーのスパなどを表示または非表示にするために拡大または縮小することになっています...これが私の最初の質問である限り、あなたの素早い対応のために依頼していただき、ありがとうございました。 – Goldentp

+0

jQueryが呼び出しているトグル機能であると誰も思っていますが、それはサイトの一部であり、すべてが本当に遅くなるからです。今のように極端に遅くすることなく、投資エリアの子供たちを拡大したり収縮させたりする別の方法はありますか? – Goldentp

答えて

1

SQLプロファイラ/ SQLトレースを起動し、ページを作成する単一のhttp要求中に実行しているクエリの数を確認します。クエリは、多くの場合、パフォーマンスの問題の原因となります。ビューをレンダリングするだけでも時間がかかりすぎることはほとんどありません。

+0

SQLプロファイラを起動して新しいトレースを開始しました。私が探して?長いトレース期間や多くの読み書きが必要なのでしょうか?あなたの迅速な対応にも感謝したいと思います! – Goldentp

+0

この場合、多くの読み取りを探します。ページのすべてのデータを取得するために発行されるクエリの数は?具体的には、ORMを使用している場合、n + 1の問題を選択している可能性があります。 – pkmiec

0

テーブルに表示しようとしているレコードが多すぎることがあります。ページングを使用する必要があります。 datatables.netを見てくださいそれはページングであなたを助ける素晴らしいjqueryプラグインです。 server side processingを使用していることを確認してください。もちろん、コード(サーバー側とクライアント側の両方)で多くの変更が必要になります。

+1

私はこのウェブサイトは現在のプロジェクトや投資分野をすばやく表示する必要があるため、実際にページングを使用することはできません。そのため、トグルを使用して、すべての情報が1ページに表示され、障害のある技術に簡単にアクセスできるようにしています。あなたのクイックレスポンスに感謝します! – Goldentp

+0

ページに表示する行の数はいくつですか?また、サーバー側で実行しているデータベースクエリを投稿できますか? –

+0

SQLクエリとは何の関係もないようですが、私は間違いなくトグル機能だと思っています。私はたった20秒でトグルをslideToggleに変更してスピードを改善しました – Goldentp

0

どのブラウザで作業していますか?古いブラウザーでは新しいブラウザーのJavascriptのパフォーマンスがなく、同時に公開または非表示にできるパネルの数が問題の原因であることは間違いありません。

私はページングを扱う答えに同意します。これは、あなたが提示しているデータの量を減らすか、同時に明らかにしている要素の数を減らさなければならないという点で良い選択です。 Javascriptの実行は瞬時ではなく、古いブラウザでは非常に遅いです。

関連する問題