Azure Front Door 的緩存

來(lái)源: Microsoft
作者:Microsoft
時(shí)間:2021-10-28
16716
下列文檔詳細(xì)說(shuō)明了在具有已啟用緩存的路由規(guī)則時(shí) Front Door 的行為。 Front Door 是一種具有動(dòng)態(tài)站點(diǎn)加速和負(fù)載平衡功能的現(xiàn)代化內(nèi)容交付網(wǎng)絡(luò) (CDN),就像其他任何 CDN 一樣,也支持緩存行為。

下列文檔詳細(xì)說(shuō)明了在具有已啟用緩存的路由規(guī)則時(shí) Front Door 的行為。 Front Door 是一種具有動(dòng)態(tài)站點(diǎn)加速和負(fù)載平衡功能的現(xiàn)代化內(nèi)容交付網(wǎng)絡(luò) (CDN),就像其他任何 CDN 一樣,也支持緩存行為。

photo-1523726491678-bf852e717f6a.JPG

大型文件交付

Azure Front Door 服務(wù)可交付大型文件,不限制文件大小。 Front Door 使用一種被稱作對(duì)象區(qū)塊的技術(shù)。 請(qǐng)求大型文件時(shí),F(xiàn)ront Door 會(huì)從后端檢索文件的較小部分。 收到完整或字節(jié)范圍的文件請(qǐng)求后,F(xiàn)ront Door 環(huán)境以 8 MB 的區(qū)塊為單位從后端請(qǐng)求文件。

區(qū)塊到達(dá) Front Door 環(huán)境后,會(huì)將區(qū)塊緩存并立即提供給用戶。 然后,F(xiàn)ront Door 會(huì)并行預(yù)提取下一個(gè)區(qū)塊。 此預(yù)提取可確保內(nèi)容始終先于用戶一個(gè)區(qū)塊,從而減少延遲。 該過(guò)程將一直持續(xù)到下載完整個(gè)文件(如果需要)或客戶端關(guān)閉連接為止。

有關(guān)字節(jié)范圍請(qǐng)求的詳細(xì)信息,請(qǐng)閱讀 RFC 7233。 Front Door 會(huì)在收到任何區(qū)塊后將區(qū)塊緩存,因此整個(gè)文件無(wú)需在 Front Door 緩存中進(jìn)行緩存。 隨后從緩存中請(qǐng)求文件或字節(jié)范圍的請(qǐng)求。 如果區(qū)塊未全部緩存,將采用預(yù)提取從后端請(qǐng)求區(qū)塊。 這種優(yōu)化依賴于后端支持字節(jié)范圍請(qǐng)求的能力。 如果后端不支持字節(jié)范圍請(qǐng)求,則此優(yōu)化不會(huì)生效。

文件壓縮

Front Door 可動(dòng)態(tài)壓縮邊緣內(nèi)容,從而更快響應(yīng)客戶端。 為了讓文件符合壓縮條件,必須啟用緩存,并且文件必須是 MIME 類型才能壓縮。 目前,F(xiàn)ront Door 不允許更改此列表。 當(dāng)前列表為:

  • "application/eot"

  • "application/font"

  • "application/font-sfnt"

  • "application/javascript"

  • "application/json"

  • "application/opentype"

  • "application/otf"

  • "application/pkcs7-mime"

  • "application/truetype"

  • "application/ttf",

  • "application/vnd.ms-fontobject"

  • "application/xhtml+xml"

  • "application/xml"

  • "application/xml+rss"

  • "application/x-font-opentype"

  • "application/x-font-truetype"

  • "application/x-font-ttf"

  • "application/x-httpd-cgi"

  • "application/x-mpegurl"

  • "application/x-opentype"

  • "application/x-otf"

  • "application/x-perl"

  • "application/x-ttf"

  • "application/x-javascript"

  • "font/eot"

  • "font/ttf"

  • "font/otf"

  • "font/opentype"

  • "image/svg+xml"

  • "text/css"

  • "text/csv"

  • "text/html"

  • "text/javascript"

  • "text/js", "text/plain"

  • "text/richtext"

  • "text/tab-separated-values"

  • "text/xml"

  • "text/x-script"

  • "text/x-component"

  • "text/x-java-source"

此外,文件大小必須介于 1 KB 與 8 MB 之間(不含首尾)。

這些配置文件支持以下壓縮編碼:

  • Gzip (GNU zip)

  • Brotli

如果請(qǐng)求同時(shí)支持 gzip 和 Brotli 壓縮,則 Brotli 壓縮優(yōu)先。
如果對(duì)資產(chǎn)的請(qǐng)求指定進(jìn)行壓縮,但該請(qǐng)求導(dǎo)致緩存缺失,則 Front Door 將直接在 POP 服務(wù)器上壓縮資產(chǎn)。 此后,將從緩存提供壓縮的文件。 通過(guò) transfer-encoding: chunked 返回所生成的項(xiàng)。

 備注

范圍請(qǐng)求可以壓縮成不同的大小。 Azure Front Door 要求任何 GET HTTP 請(qǐng)求的 content-length 值都相同。 如果客戶端發(fā)送帶有 accept-encoding 標(biāo)頭的字節(jié)范圍請(qǐng)求導(dǎo)致源以不同的內(nèi)容長(zhǎng)度響應(yīng),則 Azure Front Door 將返回 503 錯(cuò)誤。 可以在源/Azure Front Door 上禁用壓縮,也可以創(chuàng)建規(guī)則集規(guī)則以從字節(jié)范圍請(qǐng)求中刪除 accept-encoding

查詢字符串行為

借助 Front Door,可控制如何對(duì)包含查詢字符串的 Web 請(qǐng)求緩存文件。 在包含查詢字符串的 Web 請(qǐng)求中,查詢字符串是問(wèn)號(hào) (?) 后出現(xiàn)的請(qǐng)求部分。 查詢字符串可以包含一個(gè)或多個(gè)鍵值對(duì),其中字段名稱和其值由等號(hào) (=) 分隔。 每個(gè)鍵值對(duì)由與號(hào) (&) 分隔。 例如 http://www.contoso.com/content.mov?field1=value1&field2=value2。 如果請(qǐng)求的查詢字符串中有多個(gè)鍵值對(duì),其順序并不重要。

  • 忽略查詢字符串:在此模式下,F(xiàn)ront Door 將來(lái)自請(qǐng)求者的查詢字符串傳遞到第一個(gè)請(qǐng)求上的后端并緩存該資產(chǎn)。 由 Front Door 環(huán)境處理的資產(chǎn)的所有后續(xù)請(qǐng)求都將忽略查詢字符串,直到所緩存的資產(chǎn)過(guò)期。

  • 緩存每個(gè)唯一的 URL:在此模式下,包含唯一 URL 的每個(gè)請(qǐng)求(包括查詢字符串)將視為具有其自己的緩存的唯一資產(chǎn)。 例如,后端對(duì) www.example.ashx?q=test1 的請(qǐng)求做出的響應(yīng)將緩存在 Front Door 環(huán)境中,并為具有同一查詢字符串的后續(xù)緩存返回該響應(yīng)。 www.example.ashx?q=test2 的請(qǐng)求將作為具有其自己的生存時(shí)間設(shè)置的單獨(dú)資產(chǎn)來(lái)緩存。

緩存清除

直到資產(chǎn)的生存時(shí)間 (TTL) 到期之前,F(xiàn)ront Door 將一直對(duì)資產(chǎn)進(jìn)行緩存。 每當(dāng)客戶端請(qǐng)求的資產(chǎn)的 TTL 已過(guò)期時(shí),F(xiàn)ront Door 環(huán)境會(huì)檢索新的更新后資產(chǎn)副本以提供請(qǐng)求,然后存儲(chǔ)已刷新的緩存。

確保用戶始終獲取資產(chǎn)的最新副本的最佳做法是針對(duì)每次更新將資產(chǎn)版本化,并將其發(fā)布為新 URL。 Front Door 將立即檢索用于下一個(gè)客戶端請(qǐng)求的新資產(chǎn)。 有時(shí)候可能希望從所有邊緣節(jié)點(diǎn)清除緩存的內(nèi)容,并強(qiáng)制其全部檢索新的已更新資產(chǎn)。 原因可能是 Web 應(yīng)用程序的更新,也可能是快速更新包含錯(cuò)誤信息的資產(chǎn)。

選擇要從邊緣節(jié)點(diǎn)清除的資產(chǎn)。 要清除所有資產(chǎn),請(qǐng)選擇“全部清除”。 否則,在“路徑”中,輸入要清除的每個(gè)資產(chǎn)的路徑。

要清除的路徑列表中支持以下格式:

  • 單一路徑清除:通過(guò)指定資產(chǎn)的完整路徑(不帶協(xié)議和域)并包含文件擴(kuò)展名(例如 /pictures/strasbourg.png)來(lái)清除單個(gè)資產(chǎn);

  • 通配符清除:星號(hào) (*) 可用作通配符。 清除路徑中帶有 /* 的終結(jié)點(diǎn)下的所有文件夾、子文件夾和文件,或者通過(guò)指定后跟 /* 的文件夾(例如 /pictures/*),清除特定文件夾下的所有子文件夾和文件。

  • 根域清除:清除路徑中具有“/”的終結(jié)點(diǎn)的根。

 備注

清除通配符域:按照本部分中所述指定用于清除的緩存路徑并不適用于與 Front Door 關(guān)聯(lián)的任何通配符域。 目前,我們不支持直接清除通配符域。 可以通過(guò)指定特定子域和清除路徑來(lái)清除特定子域中的路徑。 例如,如果我的 Front Door 有 *.contoso.com,我可以輸入 foo.contoso.com/path/* 來(lái)清除子域 foo.contoso.com 的資產(chǎn)。 目前,要在清除內(nèi)容路徑中指定主機(jī)名,則僅限于通配符域的子域(如果適用)。

Front Door 的緩存清除不區(qū)分大小寫。 此外,它們不區(qū)分查詢字符串,這表示清除 URL 時(shí)將一并清除其查詢字符串的所有變體。

緩存到期

按下列標(biāo)題順序來(lái)確定項(xiàng)目在緩存中的存儲(chǔ)時(shí)間:

  1. Cache-Control: s-maxage=<seconds>

  2. Cache-Control: max-age=<seconds>

  3. Expires: <http-date>

優(yōu)選可指示不緩存響應(yīng)的 Cache-Control 響應(yīng)標(biāo)頭,例如 Cache-Control: private,Cache-Control: no-cache 和 Cache-Control: no-store。 如果沒(méi)有 Cache-Control,則默認(rèn)行為是 Front Door 緩存資源的時(shí)間長(zhǎng)度為 X,其中 X 隨機(jī)選取時(shí)間為 1 到 3 天。

請(qǐng)求標(biāo)頭

使用緩存時(shí),以下請(qǐng)求標(biāo)頭將不會(huì)被轉(zhuǎn)發(fā)到后端。

  • Content-Length

  • Transfer-Encoding

緩存行為和持續(xù)時(shí)間

可以在 Front Door 設(shè)計(jì)器傳遞規(guī)則和規(guī)則引擎中配置緩存行為和持續(xù)時(shí)間。 規(guī)則引擎緩存配置將始終替代 Front Door 設(shè)計(jì)器傳遞規(guī)則配置。

  • 禁用緩存后,無(wú)論源響應(yīng)指令是什么,F(xiàn)ront Door 都不會(huì)緩存響應(yīng)內(nèi)容。

  • 啟用緩存后,對(duì)于“使用緩存默認(rèn)持續(xù)時(shí)間”的不同值,緩存行為會(huì)有所不同。

    • 當(dāng)“使用緩存默認(rèn)持續(xù)時(shí)間”設(shè)置為“是”時(shí),F(xiàn)ront Door 始終采用源響應(yīng)標(biāo)頭指令。 如果缺少源指令,F(xiàn)ront Door 將緩存 1 到 3 天內(nèi)任何位置的內(nèi)容。

    • 當(dāng)“使用緩存默認(rèn)持續(xù)時(shí)間”設(shè)置為“否”時(shí),F(xiàn)ront Door 將始終替代“緩存持續(xù)時(shí)間”(必填字段),這意味著它將緩存緩存持續(xù)時(shí)間的內(nèi)容,而忽略源響應(yīng)指令中的值。

 備注

  • 在 Front Door 設(shè)計(jì)器傳遞規(guī)則中設(shè)置的“緩存持續(xù)時(shí)間”是“最小緩存持續(xù)時(shí)間”。 如果源的緩存控制標(biāo)頭的 TTL 大于替代值,則此替代將不起作用。

  • 如果緩存內(nèi)容的請(qǐng)求頻率不高,可能會(huì)在它們過(guò)期之前將其從 Azure Front Door 中逐出,以便為更頻繁請(qǐng)求的內(nèi)容騰出空間。

立即登錄,閱讀全文
版權(quán)說(shuō)明:
本文內(nèi)容來(lái)自于Microsoft,本站不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。文章內(nèi)容系作者個(gè)人觀點(diǎn),不代表快出海對(duì)觀點(diǎn)贊同或支持。如有侵權(quán),請(qǐng)聯(lián)系管理員(zzx@kchuhai.com)刪除!
相關(guān)文章
Azure Arc為企業(yè)構(gòu)建安全的云基礎(chǔ)
Azure Arc為企業(yè)構(gòu)建安全的云基礎(chǔ)
隨著人工智能技術(shù)持續(xù)重塑企業(yè)運(yùn)營(yíng)方式,企業(yè)需要能夠處理海量數(shù)據(jù)的系統(tǒng),以支持實(shí)時(shí)洞察,同時(shí)幫助他們應(yīng)對(duì)跨IT和OT環(huán)境(包括云端、邊緣和本地)中運(yùn)營(yíng)、應(yīng)用、數(shù)據(jù)和基礎(chǔ)設(shè)施的協(xié)作難題。
Azure
微軟云
云服務(wù)
2024-12-172024-12-17
釋放.NET 9和Azure的AI技術(shù)與云計(jì)算潛力:更快、更智能、面向未來(lái)
釋放.NET 9和Azure的AI技術(shù)與云計(jì)算潛力:更快、更智能、面向未來(lái)
.NET 9現(xiàn)已正式發(fā)布,它為.NET平臺(tái)的發(fā)展掀開了嶄新的一頁(yè),突破了性能、云原生開發(fā)和AI技術(shù)集成的邊界。
Azure
微軟云
云服務(wù)
2024-12-162024-12-16
Azure網(wǎng)絡(luò)管理現(xiàn)已具備智能Microsoft Copilot副駕駛能力
Azure網(wǎng)絡(luò)管理現(xiàn)已具備智能Microsoft Copilot副駕駛能力
智能Microsoft Copilot副駕駛for Azure網(wǎng)絡(luò)服務(wù)現(xiàn)已推出公共預(yù)覽版。
Azure
微軟云
云服務(wù)
2024-12-102024-12-10
Microsoft Fabric功能更新,借助AI驅(qū)動(dòng)的數(shù)據(jù)平臺(tái)加速應(yīng)用創(chuàng)新
Microsoft Fabric功能更新,借助AI驅(qū)動(dòng)的數(shù)據(jù)平臺(tái)加速應(yīng)用創(chuàng)新
一年前,我們正式推出了一款端到端數(shù)據(jù)平臺(tái),旨在幫助組織推動(dòng)人工智能轉(zhuǎn)型,并重新定義數(shù)據(jù)的連接、管理和分析方式。
Azure
微軟云
云服務(wù)
2024-12-092024-12-09
優(yōu)質(zhì)服務(wù)商推薦
更多
掃碼登錄
打開掃一掃, 關(guān)注公眾號(hào)后即可登錄/注冊(cè)
加載中
二維碼已失效 請(qǐng)重試
刷新
賬號(hào)登錄/注冊(cè)
個(gè)人VIP
小程序
快出海小程序
公眾號(hào)
快出海公眾號(hào)
商務(wù)合作
商務(wù)合作
投稿采訪
投稿采訪
出海管家
出海管家