共用方式為


HOW TO:使用檔案相依性快取頁面輸出

更新:2007 年 11 月

有時候您會想要在檔案變更時,從輸出快取移除網頁。例如,某個網頁可能會從需要大量處理序的報表中取得其內容,以產生 XML 檔案做為輸出,,則此網頁只有在 XML 檔案變更時才需要重新處理。若要限制只有在必要時才重新處理,可以讓網頁的快取原則相依於單一檔案。必要時,可以讓快取網頁相依於一個以上的檔案。

注意事項:

您可以呼叫 RemoveOutputCacheItem 方法,從輸出快取明確移除任何網頁。您可以從 Global.asax 檔案、從自訂 ASP.NET 伺服器控制項或從網頁執行上述作業,端視應用程式的需求。

若要使快取的網頁輸出與檔案相依

  1. 以宣告方式或以程式設計方式,指定快取網頁輸出的設定。如需詳細資訊,請參閱 HOW TO:設定 ASP.NET 網頁快取的到期值設定網頁的快取性快取網頁的多個版本

  2. 在網頁程式碼中,呼叫 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 屬性。

若要使快取網頁輸出相依於一組檔案

  1. 以宣告方式或以程式設計方式,指定快取網頁輸出的設定。如需詳細資訊,請參閱 HOW TO:設定 ASP.NET 網頁快取的到期值設定網頁的快取性快取網頁的多個版本

  2. 在網頁程式碼中,建立包含網頁所相依之檔案路徑的 String 陣列或 ArrayList

  3. 呼叫 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
    

請參閱

工作

HOW TO:以程式設計方式設定頁面的快取性

概念

快取 ASP.NET Web 網頁

設定網頁的快取性