Substitutionコントロール---キャッシュ・ページを動的に更新する部分
ASPをキャッシュする.NETページの場合、デフォルトではそのページのすべての出力がキャッシュされます.最初のリクエストでは、ページが実行され、出力がキャッシュされます.後続のリクエストについては、キャッシュによって完了し、ページのコードは実行されません.
場合によってはASPをキャッシュする場合がある.NETページですが、各リクエストに応じてページで選択した部分を更新する必要があります.たとえば、ページの大部分をキャッシュする場合がありますが、ページの時間の高さに関する情報を動的に更新する必要があります.
Substitutionコントロールを使用して、動的コンテンツをキャッシュ・ページに挿入できます.Substitutionコントロールにはタグは表示されません.このコントロールをページまたは親ユーザーコントロールにバインドする方法が必要です.自分で静的メソッドを作成して、ページに挿入する情報を返します.Substitutionコントロールによって呼び出されるメソッドは、次の基準を満たす必要があります.この方法は静的方法(Visual Basicでは共有方法)として定義される. この方法は、HttpContextタイプのパラメータを受け入れる. このメソッドはStringタイプの値を返します.
Substitutionコントロールでは、ページの他のコントロールにアクセスできません.つまり、他のコントロールの値をチェックしたり変更したりすることはできません.ただし、コードは、渡されたパラメータを使用して現在のページコンテキストにアクセスできます.
ページが実行されると、Substitutionコントロールはメソッドを呼び出し、ページのSubstitutionコントロールをメソッドの戻り値に置き換えます.
次のコード例では、Substitutionコントロールを使用してキャッシュ・ページに動的に更新されたコンテンツを作成する方法を示します.ページのLoadイベントのコードは現在の時間でLabelコントロールを更新します.ページのキャッシュ期間が60秒に設定されているため、Labelコントロールのテキストは60秒以内にページが複数回要求されても変更されません.ページのSubstitutionコントロールは、現在の時刻を文字列として返す静的メソッド
static string getCurrentTime(HttpContext context) { return DateTime.Now.ToString(); }void Page_Load(object sender, EventArgs e){ Response.Cache.SetExpires(DateTime.Now.AddSeconds(600)); Response.Cache.SetCacheability(HttpCacheability.Public); Response.Cache.SetValidUntilExpires(true);} キャッシュページにダイナミックコンテンツを挿入する--substitutionコントロールを使用して
コード2:.lineBorderBlue1{BORDER-TOP: #999999 1px groove;BORDER-BOTTOM: #999999 1px groove;BORDER-LEFT: #999999 1px groove;BORDER-RIGHT: #999999 1px groove;background-color:#efefef;}
<%@ OutputCache Duration="600"VaryByParam="none"%>static string getCurrentTime(HttpContext context) { return DateTime.Now.ToString(); } キャッシュページにダイナミックコンテンツを挿入する--substitutionコントロールを使用して
結果は図のようになります.
場合によってはASPをキャッシュする場合がある.NETページですが、各リクエストに応じてページで選択した部分を更新する必要があります.たとえば、ページの大部分をキャッシュする場合がありますが、ページの時間の高さに関する情報を動的に更新する必要があります.
Substitutionコントロールを使用して、動的コンテンツをキャッシュ・ページに挿入できます.Substitutionコントロールにはタグは表示されません.このコントロールをページまたは親ユーザーコントロールにバインドする方法が必要です.自分で静的メソッドを作成して、ページに挿入する情報を返します.Substitutionコントロールによって呼び出されるメソッドは、次の基準を満たす必要があります.
Substitutionコントロールでは、ページの他のコントロールにアクセスできません.つまり、他のコントロールの値をチェックしたり変更したりすることはできません.ただし、コードは、渡されたパラメータを使用して現在のページコンテキストにアクセスできます.
ページが実行されると、Substitutionコントロールはメソッドを呼び出し、ページのSubstitutionコントロールをメソッドの戻り値に置き換えます.
次のコード例では、Substitutionコントロールを使用してキャッシュ・ページに動的に更新されたコンテンツを作成する方法を示します.ページのLoadイベントのコードは現在の時間でLabelコントロールを更新します.ページのキャッシュ期間が60秒に設定されているため、Labelコントロールのテキストは60秒以内にページが複数回要求されても変更されません.ページのSubstitutionコントロールは、現在の時刻を文字列として返す静的メソッド
GetTime
を呼び出す.ページをリフレッシュするたびに、Substitutionコントロールが示す値が更新されます.次の2つの方法でこの特性を実証しない:コード1:lineBorderBlue1{BORDER-TOP: #999999 1px groove;BORDER-BOTTOM: #999999 1px groove;BORDER-LEFT: #999999 1px groove;BORDER-RIGHT: #999999 1px groove;background-color:#efefef;} Cache Time:<%=DateTimeをデモする.Now.ToString() %>
Real Time:
コード2:.lineBorderBlue1{BORDER-TOP: #999999 1px groove;BORDER-BOTTOM: #999999 1px groove;BORDER-LEFT: #999999 1px groove;BORDER-RIGHT: #999999 1px groove;background-color:#efefef;}
<%@ OutputCache Duration="600"VaryByParam="none"%>
Cache Time:<%=DateTimeをデモする.Now.ToString() %>
Real Time:
結果は図のようになります.