ホームページ > バックエンド開発 > C#.Net チュートリアル > ASP.NET ページ キャッシュ テクノロジの簡単な分析

ASP.NET ページ キャッシュ テクノロジの簡単な分析

怪我咯
リリース: 2017-03-31 11:55:58
オリジナル
1276 人が閲覧しました

テクノロジーについてもっと書きたいとずっと思っていました
まず、もっと知識を深めるためですQuery、もちろん、これからもっとたくさんあるでしょう。笑
ゴシップはもうやめてください
今日はそれをまとめる時間があるだけです


PageCache
OutputCache コマンドを使用してください。
<%@ OutputCache Duration= "3600"
Location="Any"
VaryByCustom="browser"
VaryByParam="RequestID" %>
Duration 属性と VaryByParam 属性は必須です


。 場所任意のClientDownstreamServerNone


Duration を使用すると、ページがキャッシュ内に存在する期間 (秒単位) を制御できます。

VaryByParam を使用すると、ページのさまざまなバージョンをキャッシュできます。上記の例では、VaryByParam が RequestID に設定されているため、ASP.NET は、HTTP GET クエリ 文字列 で渡されるか、HTTP POST 入力のパラメータで渡される、RequestID パラメータの異なる値を使用します。 。 RequestID パラメーターの値をチェックすることで、アプリケーションで異なるユーザーを区別できるようになります。ページの OutputCache ディレクティブに VaryByParam="RequestID" を配置すると、ASP.NET でユーザーごとに異なるバージョンのページをキャッシュできるようになります。
パラメータの値に基づいてページの独立したバージョンをキャッシュしたくない場合は、VaryByParam を none に設定するだけです。
可能なパラメータ配列の組み合わせごとにページのバージョンをキャッシュするように ASP.NET に依頼することもできます。これを行うには、VaryByParam を * に設定します。

VaryByHeader 属性と VaryByCustom 属性は、ページの新しいキャッシュされたバージョンをいつ作成するかを指定できるという点で VaryByParam に似ています。
VaryByHeader を使用すると、セミコロンで区切られた HTTP ヘッダーのリストに基づいて、ページの非直接バージョンをキャッシュできます。
VaryByCustom をブラウザーに設定すると、ブラウザーの名前とメイン バージョン情報に基づいてさまざまなバージョンをキャッシュできるようになります。これをカスタム メソッドの名前に設定して、独自のロジックを実装し、キャッシュされたバージョンを制御することもできます。

フラグメント キャッシュ
ユーザー コントロールを使用してページをセグメント化し、キャッシュされたステートメントを ascx ファイルに書き込む代わりに、キャッシュされたステートメントを ascx ファイルに書き込むことができます。これにより、ASP.NET は ascx フラグメントの出力のみをキャッシュできるようになります。通常、ヘッダーまたはフッターが基本的に同じであれば、リロードする必要はありません。ただし、動的に変化するデータがある場合は、キャッシュすることはできません。一度キャッシュされると、プログラムは更新データを表示するためにそのインスタンスを作成せず、有効期限が切れるまで待つことしかできないため、この場合はキャッシュされません。ページフラグメントのキャッシュに適しています。
注意:
1. フラグメント キャッシュは、ページ フラグメントをキャッシュする唯一の正当な場所であることに注意してください。これは、フラグメント キャッシュは ASP.NET の新機能であるため、ブラウザーとプロキシ サーバーはフラグメント キャッシュをサポートしていないためです。
2. フラグメント キャッシュには、ページ キャッシュにはない別の機能、VaryByControl があります。 VaryByControl 属性を使用すると、ユーザー コントロール内で使用されるコントロールの名前を表す文字列のセミコロン区切りのリストを指定できます。ASP.NET は、値の異なる組み合わせごとにユーザー ウィジェットのキャッシュされたバージョンを生成します。

データ キャッシュ
低レベル API は、ASP.NET の System.web.Caching 名前空間 にある Cache クラスであり、リソースを消費するデータをキャッシュして生成するために使用できます。 Cache クラスの使用は、Session や Application オブジェクト と同じくらい簡単です。 Cache オブジェクトはアプリケーションごとに 1 つだけあります。これは、Cache オブジェクトを使用してキャッシュに保存されるデータがアプリケーション レベルのデータであることを意味します。さらに簡単にするために、Page クラスの Cache プロパティ を使用すると、アプリケーションの Cache オブジェクト インスタンスをコード内で使用できるようになります。 Cache オブジェクトを通じてキャッシュされたデータは、アプリケーションのメモリに保存されます。これは、このデータの有効期間がアプリケーションの再起動を超えないことを意味します (実際、これは、Session データを保存するために StateService または SQL State セッション モードを使用しない限り、Application オブジェクトおよび Session オブジェクトに保存されたデータと同じです)。
具体的な使用法と構文はセッションとアプリケーションと同じです。逆変換する場合は、対応する型強制
型変換に注意する必要があります。
これは、ASP.NET キャッシュにキャッシュ項目を追加する唯一の方法ではありません。 Cache オブジェクトには、より柔軟な Insert() メソッドと Add() メソッドという 2 つのメソッドがあります。使い方は似ていますが、少し異なります。
Insert() メソッドは、ASP.NET キャッシュ内の既存のキャッシュ項目を上書きするために使用されます。
Add() メソッドは、新しいキャッシュ項目を ASP.NET キャッシュに追加するためにのみ使用されます (既存のキャッシュ項目を上書きするために使用すると失敗します)。
各メソッドには 7 つのパラメータがあり、両方のメソッドのパラメータは同じです。
項目をキャッシュするときに、その関連性を指定して、特定の
イベントが発生するまでキャッシュされた項目をキャッシュ内に保持するように ASP.NET に指示できます。


意味


デフォルト値は、ページの出力をクライアントブラウザにキャッシュできるか、任意の「ダウンストリーム」クライアント(プロキシサーバーなど)にキャッシュできることを意味します。 Web サーバー自体にキャッシュされます


は、出力キャッシュが要求元のクライアント (つまり、ブラウザ) のローカル キャッシュにのみ保存できることを指定します


は、出力がキャッシュは、デバイス内の HTTP1.1 をサポートする任意のキャッシュ (プロキシ サーバーなど) に保存できます


は、出力キャッシュが Web サーバーに保存されることを示します


は、ページが出力キャッシュを無効にすることを示します

関連性の値
意味
CacheDependency
により、ファイルまたはキャッシュキーを指定できます。ファイルが変更されると、オブジェクトは削除されます。キャッシュキーが変更されると、オブジェクトも削除されます。
DateTime
これは、キャッシュデータの有効期限を示すDataTime値です(絶対有効期限)。
TimeSpan
これは、最後にキャッシュされた時間を示す時間間隔です。データがアクセスされました キャッシュに保持できる期間 (柔軟な有効期限)

CacheItemPriority を使用して、キャッシュされたデータの 優先度 を指定し、キャッシュがいっぱいになったときに優先度の低いデータを削除できるようにします。

Cache .Add("MembersDataSet",dsMembers,null, 最初のパラメータはキャッシュ オブジェクトを参照するキーで、2 番目のパラメータはキャッシュされるオブジェクトです。 3 番目のパラメータは null (相関関係がないことを示します) です。 4 番目と 5 番目のパラメーターは、絶対有効期限と柔軟な有効期限です。ここでは、キャッシュが今年の最終日 (dt) に期限切れになるように指定します。柔軟ではない有効期限を指定したいので、5 番目のパラメーターに TimeSpan.Zero を使用します。 6 番目のパラメーターは、System.Web.Caching.CacheItemPriority 列挙の値を使用して、優先度を Normal に設定します。
優先度の値
意味

この優先度に設定されたキャッシュ項目は、メモリ不足時に削除される可能性が最も低くなります
上記mal
キャッシュアイテムセットこの優先度は、優先度が Normal 以下のキャッシュ項目よりも優先されます。
Normal
この優先度に設定されたキャッシュ項目は、優先度が BelowNormal および Low のキャッシュ項目よりも優先されます。これは最後から 2 番目の優先度レベルです。この優先度に設定されたキャッシュ アイテムは、低優先度に設定されたキャッシュ アイテムよりも高く保持されるだけです

この優先度に設定されたキャッシュ アイテムは、削除される可能性が最も高いものです。メモリの容量
Default
キャッシュ項目の優先順位のデフォルト値はNormalです
NotRemovable
キャッシュ項目がキャッシュされているときこの優先順位を設定すると、ASP.NETに削除しないように指示することになりますメモリ不足の場合でもキャッシュから取得します

DateTime dt = new DateTime(DateTime.Now. Year,12,31);
dt, TimeSpan.Zero,
CacheItemPriority.Normal,null);
柔軟な有効期限を 5 分に指定します。絶対的な有効期限は指定しません

Cache.Add("MembersDataSet",dsMembers,null,
DateTime.MaxValue,TimeSpan.FromMinutes(5),
CacheItemPriority.Normal,null);

相関関係を追加します。この例では、有効期限はファイル、つまり test.xml ファイルの変更にも依存します。
CacheDependency dep = new CacheDependency(@"C:/test.xml");
Cache.Add("MembersDataSet", dsMembers, dep,
DateTime.MaxValue,TimeSpan.FromMinutes(5),
CacheItemPriority.Normal,null);

有効期限はキャッシュ内の別の項目の変更によって異なります:
String[] dependencyKeys = new String[1] ;
dependencyKeys [0] = "MembersChanged";
CacheDependency dependency = new CacheDependency(null, dependencyKeys);
Cache.Add("MembersDataSet",dsMembers,dependency,
DateTime.MaxValue,TimeSpan.Zero,
CacheItemPriority.Normal, null);

最後のパラメータは CacheItemRemovedCallback 型で、これにより、キャッシュ項目がキャッシュから削除されたときに通知をリクエストできます (ここでは、ItemRemovedCallback() メソッドのように)。 7番目のパラメータ:
public void itemRemovedCallback(String key, Object value, CacheItemRemovedReasonreason)
{
}

Cache.Add("MembersDataSet",dsMembers,dependency,
DateTime.MaxValue,TimeSpan.FromMinutes(5),
CacheItemPriority.Normal,
new CacheItemRemovedCallback(this.ItemRemovedCallback));
最初のパラメータはキャッシュ アイテムをキャッシュに保存するときに使用されるキー、2 番目は保存されたオブジェクト自体、3 番目はキャッシュ アイテムを削除する理由です。






-->

以上がASP.NET ページ キャッシュ テクノロジの簡単な分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート