HOW TO:使用檔案相依性快取頁面輸出
更新:2007 年 11 月
有時候您會想要在檔案變更時,從輸出快取移除網頁。例如,某個網頁可能會從需要大量處理序的報表中取得其內容,以產生 XML 檔案做為輸出,,則此網頁只有在 XML 檔案變更時才需要重新處理。若要限制只有在必要時才重新處理,可以讓網頁的快取原則相依於單一檔案。必要時,可以讓快取網頁相依於一個以上的檔案。
注意事項: |
---|
您可以呼叫 RemoveOutputCacheItem 方法,從輸出快取明確移除任何網頁。您可以從 Global.asax 檔案、從自訂 ASP.NET 伺服器控制項或從網頁執行上述作業,端視應用程式的需求。 |
若要使快取的網頁輸出與檔案相依
以宣告方式或以程式設計方式,指定快取網頁輸出的設定。如需詳細資訊,請參閱 HOW TO:設定 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 屬性。
若要使快取網頁輸出相依於一組檔案
以宣告方式或以程式設計方式,指定快取網頁輸出的設定。如需詳細資訊,請參閱 HOW TO:設定 ASP.NET 網頁快取的到期值、設定網頁的快取性和快取網頁的多個版本。
呼叫 AddFileDependencies 方法,並將陣列以 filenames 參數傳遞。
下列程式碼範例會建立 TextFile1.txt 和 XMLFile1.xml 檔案的檔案路徑之字串陣列,並且讓網頁輸出相依於這兩個檔案。如果任一檔案有修改,就會從快取移除網頁輸出。
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