2016-09-23 22 views
8

私たちが開発しているMVCサイトのパフォーマンスに大きな問題があります。サイトがAzureでホストされている場合、ビューのレンダリング段階では、ページが初めて読み込まれるときに膨大な時間がかかります。ページあたり15-60秒の話しです。その後の同じページの後続のロードは、期待通りに素早く素早く行われます。これは、初めてページ上のヒットのために垣間見るからのトレースです:AzureのMVC Webサイトで、各ページの最初の読み込みが遅い

enter image description here

あなたがグラフからわかるように、カミソリのレンダリングがメイン犯罪者のようです。私はRazorビューの事前コンパイルについて多くのことを読んできましたが、これを実装しようとしましたが、それはまったく違いはありませんでした。 Glimpseで指を指し示したAzure Web App開発者も関与していますが、Glimpseをインストールせずにアプリを試してみましたが、それでも通常どおり遅いです。

私はかなりここにこだわっている...任意のアイデア?

+0

、今ヶ月間となっています。ウェブアプリ/アプリサービスに「公開」するたびに、サイトが復旧するまでに40〜60秒かかることがあります。 「常時オン」はすでにオンです(ただし、この場合は適用されません)。何が遅いの原因か分かりません。サイトはそれほど複雑ではありません。私は 'Standard:1 Small'ティアを使っています。 –

+0

http://programmers.stackexchange.com/questions/97538/why-after-each-restart-my-local-net-sites-take-time-to-load-for-the-first-time – JamieD77

答えて

2

初めて各ページを読み込んだり、初めて非アクティブになったときにサイトに当たったことはありますか?

新しいファイルをアプリケーションコンテナにアップロードすると、IISの起動に時間がかかります。したがって、アプリを更新した後に最初にヒットしたページは遅くなります。また、Azure Web Appsは一定期間使用しないと脱水されます。これにより、ページがしばらくアクセスされていなければ、最初のページヒットが非常に遅くなります。

は、Webアプリケーションのための アプリケーション設定で、これに対処するには、設定は基本的に水和し、応答性のアプリを保つためにすべてのカップルの分、あなたのページにping、常にオン と呼ば見つけることができます。

+1

各ページの最初の読み込み。通常の.NETの 'コールドスタート'遅延が存在しますが、これは正常であり無視できることを認識しています。常にオンにするオプションも使用しています。 – James

4

私はMVCアプリケーションの起動時間を短縮するための解決策を見つけました。これはAzure Appサービスで最も顕著でした。そのトリックはビューをプリコンパイルすることです。そのため、Appサービスはリクエスト時に必要とされるすべてのビューに対してこれを行う必要はありません。

私の調査結果の要約:

MSBuildの引数にこれを追加し、あなたがより速く起動しますと、すべての新しいページがより速くロードされますASP.NET MVC 5を持っています。

/p:PrecompileBeforePublish=true /p:UseMerge=true /p:SingleAssemblyName=AppCode 

詳しい情報はここで見つけることができます:私は同じ問題を経験していhttp://blog.deltacode.be/2017/01/08/fix-slow-startup-of-asp-net-mvc-5-on-azure-app-services/

関連する問題