共用方式為


管理 Azure 內容傳遞網路中 Web 內容的期限

重要

Azure CDN Standard from Microsoft (classic) 將於 2027 年 9 月 30 日淘汰。 為了避免任何服務中斷,請務必在 2027 年 9 月 30 日之前,移轉您的 Azure CDN Standard from Microsoft (classic) 設定檔至 Azure Front Door Standard 或 Premium 層。 如需詳細資訊,請參閱 Azure CDN Standard from Microsoft (classic) 淘汰

來自 Edgio 的 Azure CDN 將於 2025 年 11 月 4 日淘汰。 您必須在此 日期之前將工作負載 移轉至 Azure Front Door,以避免服務中斷。 如需詳細資訊,請參閱來自Edgio的 Azure CDN 淘汰常見問題

來自可公開存取來源網頁伺服器的檔案可以在 Azure 內容傳遞網路中快取,直到其存留時間 (TTL) 經過為止。 TTL 是由來自原始伺服器之 HTTP 回應中的 Cache-Control 標頭所決定。 本文說明如何設定 Microsoft Azure App Service 之 Web Apps 功能、Azure Cloud Services、ASP.NET 應用程式、Internet Information Services (IIS) 網站的 Cache-Control 標頭,上述所有項目的設定方式均類似。 您可以使用組態檔,或以程式設計方式來設定 Cache-Control 標頭。

您也可以藉由設定內容傳遞網路快取規則,從 Azure 入口網站控制快取設定。 如果您建立一個或多個快取規則,並將其快取行為設定為 [覆寫] 或 [略過快取],就會忽略本文所討論之原始提供的快取設定。 如需一般快取概念的相關資訊,請參閱快取如何運作

提示

您可以選擇不替檔案設定 TTL。 在此情況下,除非您已在 Azure 入口網站中設定快取規則,否則 Azure 內容傳遞網路會自動套用七天的預設 TTL。 此預設 TTL 僅會套用至一般 Web 傳遞最佳化。 針對大型檔案的最佳化,預設 TTL 為一天;針對媒體串流最佳化,預設 TTL 則為一年。

如需 Azure 內容傳遞網路如何加快對檔案和其他資源的存取速度的詳細資訊,請參閱 Azure 內容傳遞網路的概觀

使用內容傳遞網路快取規則設定 Cache-Control 標頭

設定 Web 伺服器 Cache-Control 標頭的慣用方法為在 Azure 入口網站中使用快取規則。 如需內容傳遞網路快取規則的詳細資訊,請參閱使用快取規則控制 Azure 內容傳遞網路快取行為

注意

快取規則僅適用於「來自 Edgio 的 Azure CDN 標準」設定檔。 針對「來自 Edgio 的 Microsoft Azure 內容傳遞網路進階版」設定檔,您必須使用 [管理] 入口網站中的 Azure 內容傳遞網路規則引擎來執行類似功能。

瀏覽至 CDN 快取規則頁面

  1. 在 Azure 入口網站中,選取 [內容傳遞網路設定檔],然後選取 [網頁伺服器的端點]。

  2. 在左窗格的 [設定] 下方,選取 [快取規則]

    [內容傳遞網路快取規則] 按鈕的螢幕擷取畫面。

    [快取規則] 頁面隨即出現。

    [內容傳遞網路快取] 頁面的螢幕擷取畫面。

若要使用全域快取規則設定 Web 伺服器的 Cache-Control 標頭:

  1. 在 [全域快取規則] 下方,將 [查詢字串快取行為] 設定為 [忽略查詢字串],並將 [快取行為] 設定為 [覆寫]

  2. 在 [快取到期期間] 的 [秒鐘] 方塊中輸入 3600 或在 [小時] 方塊中輸入 1。

    內容傳遞網路全域快取規則範例的螢幕擷取畫面。

    這個全域快取規則會設定一小時的快取期間,並影響針對端點的所有要求。 它會覆寫由端點指定之原始伺服器所傳送的任何 Cache-ControlExpires HTTP 標頭。

  3. 選取 [儲存]。

使用自訂快取規則設定 Web 伺服器檔案的 Cache-Control 標頭:

  1. 在 [自訂快取規則] 下,建立兩個比對條件:

    1. 在第一個比對條件,將 [比對條件] 設為 [路徑],並在 [符合值] 輸入 /webfolder1/*。 將 [快取行為] 設為 [覆寫],並於 [天數] 方塊中輸入 4。

    2. 在第二個比對條件,將 [比對條件] 設為 [路徑],並在 [符合值] 輸入 /webfolder1/file1.txt。 將 [快取行為] 設為 [覆寫],並於 [天數] 方塊中輸入 2。

    內容傳遞網路自訂快取規則範例的螢幕擷取畫面。

    針對端點所指定原始伺服器的 /webfolder1 資料夾所有檔案,第一項自訂快取規則會設定四天的快取期間。 第二項規則只會針對 file1.txt 檔案覆寫第一項規則,並設定兩天的快取期間。

  2. 選取 [儲存]。

使用組態檔設定 Cache-Control 標頭

針對影像和樣式表之類的靜態內容,您可以藉由修改 Web 應用程式的 applicationHost.configweb.config 組態檔來控制更新頻率。 若要為內容設定 Cache-Control 標頭,請使用檔案中的 <system.webServer>/<staticContent>/<clientCache> 元素。

使用 ApplicationHost.config 檔案

ApplicationHost.config 檔案是 IIS 組態系統的根檔案。 ApplicationHost.config 檔案中的組態設定會影響網站上的所有應用程式,但該組態設定會由 Web 應用程式中現有的任何 Web.config 檔案設定覆寫。

使用 Web.config 檔案

您可以使用 Web.config 檔案,自訂整個 Web 應用程式或 Web 應用程式上特定目錄的行為。 通常來說,您的 Web 應用程式根資料夾中至少會有一個 Web.config 檔案。 針對特定資料夾中的每個 Web.config 檔案,組態設定會影響資料夾及子資料夾中的所有項目,除非這些項目在子資料夾層級就由另一 Web.config 檔案覆寫。

例如,您可以在 Web 應用程式中根資料夾的 Web.config 檔案中設定 <clientCache> 元素。 您也可以在子資料夾中新增具有更多變數內容的 Web.config 檔案 (例如 \frequent) 並設定其 <clientCache> 元素以快取子資料夾的內容達六小時。 最終結果是整個網站上的內容會進行三天的快取,除了 \frequent 目錄中的所有內容僅會進行六小時的快取。

下列 XML 設定檔範例會示範如何設定 <clientCache> 元素,以指定最多三天期間:

<configuration>
    <system.webServer>
        <staticContent>
            <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="3.00:00:00" />
        </staticContent>
    </system.webServer>
</configuration>

若要使用 cacheControlMaxAge 屬性,您必須將 cacheControlMode 屬性的值設為 UseMaxAge。 此設定會產生要新增至回應的 HTTP 標頭及指示詞,Cache-Control: max-age=<nnn>cacheControlMaxAge 屬性的時間範圍值格式為 <days>.<hours>:<min>:<sec>。 此值會轉換為秒,且會當做 Cache-Controlmax-age 指示詞的值使用。 如需有關 <clientCache> 元素的詳細資訊,請參閱 用戶端快取 <clientCache>

以程式設計方式設定 Cache-Control 標頭

針對 ASP.NET 應用程式,設定 .NET API 的 HttpResponse.Cache 屬性即可透過程式設計方式控制內容傳遞網路快取行為。 如需 HttpResponse.Cache 屬性的資訊,請參閱 HttpResponse.Cache 屬性HttpCachePolicy 類別

若要以程式設計方式快取 ASP.NET 中的應用程式內容,遵循下列步驟:

  1. 確認內容已標示為可快取(將 HttpCacheability 設定為 Public)。
  2. 呼叫以下其中一個 HttpCachePolicy 方法來設定快取驗證程式:
    • 呼叫 SetLastModified 以設定 Last-Modified 標頭的時間戳記。
    • 呼叫 SetETag 以設定 ETag 標頭值。
  3. 您也可以選擇性地呼叫 SetExpires,設定 Expires 標頭值,以指定快取到期時間。 否則,預設快取會套用本文件先前所述的啟發學習法。

例如,若要快取一個小時的內容,請加入下列 C# 程式碼:

// Set the caching parameters.
Response.Cache.SetExpires(DateTime.Now.AddHours(1));
Response.Cache.SetCacheability(HttpCacheability.Public);
Response.Cache.SetLastModified(DateTime.Now);

測試 Cache-Control 標頭

您可以輕鬆地驗證網頁內容的 TTL 設定。 使用瀏覽器的開發人員工具,測試網頁內容是否包含 Cache-Control 回應標頭。 您也可以使用 wgetFiddler 之類的工具來檢查回應標頭。

後續步驟