今日のASP.NETは、数百万のユーザーを処理する必要があり、負荷分散されたWebファームに展開されるトラフィックの多いWebアプリケーションに広く使用されています。 ASP.NETの重要な部分のXNUMXつは、多くのアプリケーションが使用するビューステートです。 ASP.NET View State は、クライアントとWebサーバー全体の複数のHTTPリクエスト間でページ、コントロール、カスタム値を保存する非常に強力なメカニズムです。
ASP.NET View State 値はページの非表示フィールドに保存され、Base64文字列としてエンコードされます。 アン ASP.NET View State 次のようになります。
1 2 3 |
<input id="__VIEWSTATE" type="hidden" name="__VIEWSTATE" value="/wEPDwUJNzg0MDMxMDA1D2QWAmYPZBYCZg9kF…" /> |
非常に便利ですが ASP.NET View State 特にASP.NETアプリケーションのページにグリッドコントロールや他の多くのコントロールがある状況では、非常に大きくなることがよくあります。 これはHTTP要求と応答に追加され、ASP.NETの応答時間を耐えられないレベルまで遅くします。
重いのもう一つの欠点 ASP.NET View State 帯域幅の使用量が増えるため、帯域幅のコストが大幅に増加します。 たとえば、HTTPリクエストごとに、60〜100kの追加を追加することになります。 ASP.NET View State データに、トランザクションの総数を掛けるだけで、帯域幅の消費にどれだけのコストがかかるかがすぐにわかります。
最後に、状況によっては、機密データを一部として送信することでセキュリティリスクが発生します。 ASP.NET View State。 送信する前に暗号化することもコストがかかります。
これらすべての問題を解決するために、キャッシュすることができます ASP.NET View State Webサーバー上で、キャッシュ内のキーとしてGUIDを割り当てます。 次に、このGUIDは非表示フィールドでブラウザに送信され、次のHTTPリクエストとともに返され、対応するGUIDをフェッチするために使用されます。 ASP.NET View State キャッシュから。 これにより、ブラウザーに送信されるペイロードが削減され、ASP.NETの応答時間が改善されるだけでなく、帯域幅の消費コストも大幅に削減されます。
ASP.NETアプリケーションが負荷分散されたWebファームで実行されている場合は、分散キャッシュを使用する必要があります。 ASP.NETキャッシュのようなスタンドアロンキャッシュは機能しません。 NCache を提供するエンタープライズレベルの分散キャッシュです ASP.NET View State キャッシングモジュール。 それを使用するために、あなたはプログラミングをする必要はありません。 ASP.NETweb.configを変更するだけです。
使用する手順は次のとおりです NCache キャッシング用 ASP.NET View State:
- ASP.NETアプリケーションでapp.browserファイルを作成します。 App_browsersディレクトリの下に作成します。 次のように、ページアダプタをapp.browserファイルにプラグインします。
123456<browser refID="Default"><controlAdapters><adapter controlType="System.Web.UI.Page"adapterType="Alachisoft.NCache.Adapters.PageAdapter"/></controlAdapters></browser> - 次に、web.configファイルのコンパイルセクションに次のアセンブリ参照を追加します。
1234567<compilation defaultLanguage="C#" debug="true"><assemblies><add assembly="Alachisoft.NCache.Adapters,Version=1.0.0.0,Culture=neutral,PublicKeyToken=cff5926ed6a53769"/></assemblies></compilation> - 設定セクションをweb.configファイルに登録します。
12345678910<configSections><sectionGroup name="ncContentOptimization"><section name="settings"type="Alachisoft.NCache.ContentOptimization.Configurations.ContentSettings"allowLocation="true" allowDefinition="Everywhere"/></sectionGroup></configSections> - 上記で登録したweb.configファイルで設定セクションの設定を指定します。
1234567891011<ncContentOptimization><settings enableMinification="true"enableViewstateCaching="true"groupedViewStateWithSessions="true"viewstateThreshold="0"enableTrace="true"><cacheSettings cacheName="mycache"><expiration type="Sliding" duration="300"/></cacheSettings></settings></ncContentOptimization> - 最後に、次のようにweb.configのHttpHandlersセクションにHTTPハンドラーを登録します。
1234567<add verb="GET,HEAD" path="NCResource.axd"validate="false"type="Alachisoft.NCache.Adapters.ContentOptimization.ResourceHandler,Alachisoft.NCache.Adapters, Version=1.0.0.0,Culture=neutral,PublicKeyToken=cff5926ed6a53769"/>
構成後 NCache、あなたは見ることができます ASP.NET View State アプリケーションで次のようにタグ付けします。
1 2 3 4 5 6 7 |
< input type="hidden" name="__NCPVIEWSTATE" id="__NCPVIEWSTATE" value="vs:cf8c8d3927ad4c1a84da7f891bb89185" /> < input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="" /> |
別の隠しタグが追加されていることに注意してください ASP.NET View State。 に割り当てられた一意のキーが含まれています ASP.NET View State 分散キャッシュ内のページのしたがって、アプリケーションサーバーが必要とするときはいつでも ASP.NET View State キャッシュから簡単に取得できる値。
これにより、ASP.NETの応答時間が大幅に向上し、帯域幅の消費コストも大幅に削減されます。
詳細をご覧ください ASP.NET View State 試行によるキャッシング NCache ASP.NET View State 自分でモジュール化します。
あなたが使用することができます NCache MicrosoftAzureASP.NETアプリケーションのASP.NETセッション状態を格納するためのAzureの場合。 これは、MicrosoftAzureセッションストレージのオプションとその理由を説明するブログです。 NCache for Azureは、MicrosoftAzureで利用可能なすべてのオプションの中で最適です。
https://20.200.20.123:86/storing-asp-net-session-state-in-a-microsoft-azure-distributed-cache/
Windows Azure Caching(プレビュー)を使用してセッション状態を正常に処理している人はいますか?