ディーバ Blog

大阪発 C#の会社、株式会社ディーバの Blog です。

Azure Web App で ASP.NET MVC Web アプリの初回アクセスが遅い

ASP.NET MVC Web アプリケーションを Azure Web App へ発行した場合、初回の表示が非常に遅い場合、次の設定を見直すと高速化できます。

常時接続をオン

Azure ポータルで、Web App の「アプリケーション設定」にある「常時接続」をオンにします。

f:id:jz5_diva:20170227140040p:plain

「Web アプリを毎回読み込む必要があることを示します。既定では、Web アプリはアイドルになった後でアンロードされます。この Web アプリで実行されている継続的な Web ジョブがある場合は、このオプションを有効にすることをお勧めします」とのこと。

IIS の開始モード (startMode) 設定の “AlwaysRunning” が、この常時接続 (Always On) にあたるようです。

ファイル発行オプションでプリコンパイルする

Visual Studio の発行の「設定」で、ファイル発行オプションの「発行中にプリコンパイルする」にチェックします。また、「構成」ウィンドウの「プリコンパイル済みサイトを更新可能にする」のチェックを外します。

f:id:jz5_diva:20170227135911p:plain

f:id:jz5_diva:20170227135914p:plain

以上で、発行時に少し時間がかかりますが、初回アクセスの時間が早くなっているはずです。ただし、View のみの更新(cshtml ファイルのみを差し替え)などはできなくなります。

※ 「App_Dataフォルダーのファイルを除外する」は、発行時に App_Data フォルダーの内容を追加や更新したりしません。必要に応じてオン・オフしてください。

発行先の追加ファイルを削除する

プリコンパイルせず発行したことがある場合、プリコンパイルしたアプリの実行に不要なフォルダーがサーバーに残っているため「The directory ‘/App_GlobalResources/’ is not allowed because the application is precompiled」といったエラーが発生するかもしれません。

その場合、ファイル発行オプションの「発行先の追加ファイルを削除する」をチェックして発行すれば、プロジェクトにないファイル等は削除され、エラーが起きません。アプリでサーバーに直接ファイルを作っている場合は、それらのファイルも削除されるので注意してください。