方法 : ファイルの依存関係によるページ出力のキャッシュ
更新 : 2007 年 11 月
ファイルが変更されたときなど、出力キャッシュからページを削除する必要がある場合があります。たとえば、XML ファイルを出力する処理負荷が大きいレポートからコンテンツを取得するページがあるとします。このページは、XML ファイルが変更された場合のみ再処理する必要があります。このような場合のみ再処理するように制限する場合は、ページのキャッシュ ポリシー使用します。必要に応じて、キャッシュされたページを複数のファイルに依存するように設定できます。
メモ : |
---|
RemoveOutputCacheItem メソッドを呼び出すと、出力キャッシュから任意のページを明示的に削除できます。このメソッドの呼び出しは、アプリケーションでの必要性に応じて、Global.asax ファイル、カスタム ASP.NET サーバー コントロール、またはページから実行できます。 |
キャッシュされたページ出力をファイルに依存させるには
キャッシュ対象のページ出力の設定を宣言またはプログラムによって指定します。詳細については、「方法 : ASP.NET ページのキャッシュに有効期限値を設定する」、「ページのキャッシュの設定」、および「ページの複数バージョンのキャッシュ」を参照してください。
ページ コードで AddFileDependency メソッドを呼び出します。メソッドの filename パラメータとして、依存関係を作成するファイルのパスを渡します。
TextFile1.txt にファイルの依存関係を設定するコード例を次に示します。ファイルが変更されると、ページ出力がキャッシュから削除されます。
protected void Page_Load(object sender, EventArgs e) { string fileDependencyPath = Server.MapPath("TextFile1.txt"); Response.AddFileDependency(fileDependencyPath); // Set additional properties to enable caching. Response.Cache.SetExpires(DateTime.Now.AddSeconds(60)); Response.Cache.SetCacheability(HttpCacheability.Public); Response.Cache.SetValidUntilExpires(true); }
Protected Sub Page_Load(ByVal sender As Object, _ ByVal e As EventArgs) Handles Me.Load Dim fileDependencyPath As String = _ Server.MapPath("TextFile1.txt") Response.AddFileDependency(fileDependencyPath) ' Set additional properties to enable caching. Response.Cache.SetExpires(DateTime.Now.AddSeconds(60)) Response.Cache.SetCacheability(HttpCacheability.Public) Response.Cache.SetValidUntilExpires(True) End Sub
メモ : ASP.NET ユーザー コントロールからこれらのメソッドを使用することはできません。ただし、@ OutputCache ディレクティブを指定する任意のユーザー コントロールにファイルの依存関係を作成して、Dependency プロパティに割り当てることができます。
キャッシュされたページ出力をファイルのグループに依存させるには
キャッシュ対象のページ出力の設定を宣言またはプログラムによって指定します。詳細については、「方法 : ASP.NET ページのキャッシュに有効期限値を設定する」、「ページのキャッシュの設定」、および「ページの複数バージョンのキャッシュ」を参照してください。
AddFileDependencies メソッドを呼び出し、配列を filenames パラメータとして渡します。
TextFile1.txt ファイルと XMLFile1.xml ファイルのファイル パスの文字列配列を作成し、ページ出力をこの 2 つのファイルに依存するように設定するコード例を次に示します。いずれかのファイルが変更されると、ページ出力はキャッシュから削除されます。
protected void Page_Load(object sender, EventArgs e) { string[] fileDependencies; string fileDependency1 = Server.MapPath("TextFile1.txt"); string fileDependency2 = Server.MapPath("XMLFile1.xml"); fileDependencies = new String[] { fileDependency1, fileDependency2 }; Response.AddFileDependencies(fileDependencies); }
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Dim fileDependencies() As String Dim fileDependency1 As String = Server.MapPath("TextFile1.txt") Dim fileDependency2 As String = Server.MapPath("XMLFile1.xml") fileDependencies = New String() {fileDependency1, _ fileDependency2} Response.AddFileDependencies(fileDependencies) End Sub