ASP.NETアプリケーションのユーザー数が少ない場合は、速度の速さや遅さは気にしないでしょう。とにかく、かなり良いパフォーマンスが得られるでしょう。 ただし、ASP.NETアプリケーションに負荷を追加すると、ASP.NETのパフォーマンスが大幅に低下する可能性が非常に高くなります。 十分な負荷がかかると、停止することさえあります。 そして皮肉なことに、そのすべてはあなたのビジネスがより多くの活動を見ているときに起こるので、影響はさらに大きくなります。
今日のASP.NETは、トラフィックの多いアプリで非常に人気があり、10〜20台のサーバーの負荷分散されたWebファーム、場合によっては50〜100台のサーバーファームが一般的になっています。 したがって、これらの状況では、ASP.NETのパフォーマンスは解決すべきさらに敏感な問題です。
NCache 詳細 NCache ドキュメント ASP.NETキャッシングドキュメント
使い方 NCache 分散キャッシュとして
ASP.NETの負荷を増やすと、ASP.NETのパフォーマンスが低下する主な理由は、ASP.NETアプリケーションのWebファームのように大きな負荷を処理できないデータベースです。 これは、ASP.NET Webファームにサーバーを追加することはできますが、データベースで同じことを行うことはできないためです。
したがって、これらの状況では、最善の策は 分散キャッシュ ような NCache. NCache はメモリ内にあるため、データベースよりもはるかに高速です。 と、 NCache キャッシュサーバーのクラスターを構築し、Webファームのようにクラスターを直線的に拡張できます。 その結果、 NCache、ASP.NETのパフォーマンスは、極端なトランザクション負荷の下でも優れたままです。 使用できます NCache 次のXNUMXつの方法で:
ASP.NETセッション状態ストレージ
ASP.NETアプリケーションを次のように構成できます ASP.NETセッション状態をに格納する NCache InProc、State Server、またはSQLServerの代わりに。 ここではプログラミングは必要ないことに注意してください。 次のようにweb.configコードを変更するだけです。
1 2 3 4 5 6 |
<sessionstate cookieless="false" regenerateexpiredsessionid="true" mode="Custom" customprovider="NCacheSessionProvider" timeout="20"> <providers> <add name="NCacheSessionProvider" type="Alachisoft.NCache.Web.SessionState.NSessionStoreProvider" exceptionsenabled="true" enablesessionlocking="true" emptysessionwhenlocked="false" sessionlockingretry="-1" sessionappid="NCacheTest" useinproc="false" enablelogs="false" cachename="myReplicatedCache" writeexceptionstoeventlog="false" asyncsession="false"> <providers> <sessionstate></sessionstate></providers></add></providers></sessionstate> |
ASP.NETアプリケーションデータキャッシュ
他の方法はあなたがすることです アプリケーションデータをキャッシュする のような分散キャッシュで NCache したがって、次にASP.NETアプリケーションがこのデータを必要とするとき、それはキャッシュ内で検出されます。 アプリケーションデータをキャッシュする方法に関する小さなコードサンプルを次に示します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
using Alachisoft.NCache.Web.Caching; ... Cache cache = NCache.InitializeCache("myCache"); // Create a key to lookup in the cache // The key for will be like “Employees:PK:1000” string key = "Employee:EmployeeId:" + emp.EmployeeId.ToString(); Employee employee = (Employee)Cache[key]; if (employee == null) { // item not found in the cache. load from db LoadEmployeeFromDb(employee); // Now, add it to the cache for future reference Cache.Insert(key, employee, null, Cache.NoAbsoluteExpiration, Cache.NoSlidingExpiration, CacheItemPriority.Default, null ); } |
キャッシュするデータが多いほど、データベースにアクセスする必要が少なくなり、ASP.NETアプリケーションのパフォーマンスが向上します。