2016-05-13 3 views
0

私はコントローラを持っています - TestController - インデックスメソッドで。 Aビュー-Index - 、およびViewModel-IndexViewModelを含む。MVCアプリケーションでの表示は、ViewModel配列を設定するのに非常に時間がかかります

Index methodは、データベースからTestObjectというオブジェクトのリストを取得し、その後、Index viewに表示するViewModelに渡します。

TestObjectのリストを取得するのに約500msかかりますが、ビュー内のすべての項目を表示しようとすると、10-15秒以上かかることがあります。これは、LINQクエリとバックエンドに何も問題がなければ、ビューレンダリングがそれを保持していると信じています。

インデックス法

[HttpGet] 
public ActionResult Index() 
{ 
    List<TestObject> testObjects = _myRepository.GetTestObjects(); 
    return View(new IndexViewModel(_myRepository, testObjects)); 
} 

IndexViewModel

public List<TestObject> TestObjects { get; set; } 

public IndexViewModel() { } 

public IndexViewModel(IMyRepository myRepository, List<TestObject>) 
{ 
    TestObjects = testObjects; 
} 

インデックスビュー

<% if (Model.TestObjects != null && Model.TestObjects.Count() > 0) { %> 
    <% Html.RenderPartial("TestObjectList", Model.TestObjects); %> 
<% } 

誰もが任意のアイデアがありますか?

+0

プレフィックスを使用して、自分の時間がどこにあるかを調べることができます。http://www.prefix.io/ –

+0

TestObjectList Partialはどのように見えますか? – etoisarobot

答えて

1

このようなパフォーマンスの問題を解決するには、thisのようなものを使用することができます。なぜなら、読み込みに時間がかかる理由がわかります(古いDynatrace Ajaxエディションをダウンロードしてください)。 。

私が見る他の一般的な問題は、ページに表示する結果の数が大幅に減速したり、ブラウザをクラッシュさせる可能性があることです。いくつの行またはオブジェクトを表示していますか?

どのブラウザを使用していますか、ブラウザを変更するとパフォーマンスが変わりますか?

あなたが送信している任意のJavaScript、画像、またはCSSファイルを見ることができます。これにより、パフォーマンスが低下し、もちろん接続速度も遅くなります。