2

更新後に MVC Web アプリケーションを使用する場合、最初のホームページの読み込みに数分かかります。最初のロードの後、かなり高速にロードされます。おそらく、MSIL コードはネイティブ マシン コードにコンパイルされ、キャッシュされます。(私が間違っている場合は修正してください)。これはすべてのページで発生します。

新しいバージョンがサーバーにコピーされるたびに、非常に遅くなります。この問題を解決するために、ユーザーの時間を大幅に節約できるように、ngen で事前に jit コンパイルしようとしました。ただし、プロジェクトの bin フォルダー内のすべての dll に対して「ngen install mydll.dll」を実行すると、いくつかのエラーが発生します。これがコマンドです

cd "C:\Windows\Microsoft.NET\Framework64\v4.0.30319"
for %%i in (C:\inetpub\wwwroot\myproject\bin\*.dll) do ngen install "%%i"

最初のエラーは次のとおりです。

Failed to load dependency System.Web.Mvc of assembly DotNetOpenAuth.Core, 
Version=4.3.0.0, Culture=neutral, PublicKeyToken=2780ccd10d57b246 because of the following error : The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
Failed to load dependency log4net of assembly DotNetOpenAuth.Core, Version=4.3.0.0, Culture=neutral, PublicKeyToken=2780ccd10d57b246 because of the following error : The system cannot find the file specified. (Exception from  HRESULT: 0x80070002)

プロジェクトは正常にデバッグおよびビルドされます。これを達成する正しい方法は何ですか?

4

1 に答える 1

7

Web アプリケーションの初期化をウォームアップする必要があります。これにより、初めてホームページの読み込みが高速化されます。概念的な概要を簡単に説明すると、次のようになります。

1) Web サイトに対して最初のリクエストが行われるまで、ワーカー プロセスは生成されません。ワーカー プロセスは、アプリケーション プールに関連付けられています。プロセスが Web サイトを開始するため、ワーカー プロセスの生成には時間がかかる場合があります。したがって、最初のステップは、事前にワーカー プロセス (w3wp.exe) を生成することです。これは、アプリケーション プール レベルで実行できます。

2) ウェブサイトへの最初のリクエストで; ワーカー プロセスは、すべてのアプリケーション DLL をロードして要求を実行します。dll をロードするこのプロセスには時間がかかる場合があります。また、アプリケーション プールがリサイクルされると、ワーカー プロセスはすべてのアプリケーション dll を再度リロードする必要があります。したがって、2 番目のステップは、ワーカー プロセスによって dll をプリロードすることです。これは Web サイト レベルで実行できます。

アプリケーション ウォームアップ モジュールは、IIS 8.0 の組み込み機能です。

以下のリンクに従って、IIS で Web アプリケーションをウォームアップしてください。

http://technet.microsoft.com/en-us/video/microsoft-virtual-academy-ii8-application-initialization.aspx

http://blogs.msdn.com/b/amol/archive/2013/01/25/application-initialization-ui-for-iis-7-5.aspx

http://www.iis.net/learn/get-started/whats-new-in-iis-8/iis-80-application-initialization

http://weblog.west-wind.com/posts/2013/Oct/02/Use-IIS-Application-Initialization-for-keeping-ASPNET-Apps-alive

于 2014-04-18T14:13:16.730 に答える