CDN调试—Debug Headers
文 / Eric Klein
翻譯 / John
原文?
https://medium.com/disney-streaming/the-cdn-edge-debug-headers-can-be-your-best-friend-af06cfd9f2db
Debug Headers背景
在之前的一篇文章中,我們討論了如何讀取可能隨HTTP響應(yīng)返回的基本HTTP消息頭,以及這些消息頭是如何影響緩存的。為了能有效地幫助我們了解在不同內(nèi)容分發(fā)網(wǎng)絡(luò)(CDN)世界中緩存對(duì)象的位置以及如何實(shí)現(xiàn)緩存,這些只是其中的第一個(gè)構(gòu)建塊。若想透徹了解CDN中發(fā)生的一切,真正關(guān)鍵在于熟練掌握調(diào)試頭文件。
這些方便的工具可讓您充分利用Content Delivery Network的每項(xiàng)特性,雖然其中一些調(diào)試頭文件十分容易在每個(gè)請(qǐng)求上被發(fā)布,但某些CDN只有在一些特定請(qǐng)求頭文件存在時(shí)才會(huì)附加一部分調(diào)試頭文件。為了安全起見,CDN有時(shí)甚至需要額外的請(qǐng)求頭文件、自定義密鑰與請(qǐng)求一起傳遞,以便確保合適的調(diào)試頭文件被接收。
盡管最終接收的這些調(diào)試頭文件相對(duì)來說較為簡(jiǎn)單,但響應(yīng)中信息返回所需要的實(shí)際解釋可能會(huì)為開發(fā)者帶來不小的挑戰(zhàn)。在某些情況下,開發(fā)者需要詳細(xì)參考CDN指南,這些指南詳盡闡述了每個(gè)標(biāo)題的含義。在其他情況下,單個(gè)字符可能提供大量數(shù)據(jù),這些數(shù)據(jù)只能通過Internet規(guī)范加以解釋。
在本篇文章中,我將探討這些調(diào)試頭文件的常見優(yōu)點(diǎn),其所能提供的信息以及解釋這些數(shù)據(jù)的最佳思路。盡管我們會(huì)在本文中關(guān)注Apache Traffic Server的調(diào)試頭文件,但這不影響我們提供指向某些CDN的鏈接并討論他們自己的調(diào)試頭文件,以便為CDN調(diào)試的所有相關(guān)內(nèi)容提供全面指導(dǎo)。
Debug Header示例
通過在對(duì)象請(qǐng)求中顯示“X-Debug”,Apache Traffic Server(當(dāng)使用適當(dāng)?shù)能浖M(jìn)行設(shè)置時(shí))將響應(yīng)一部分龐大的基于調(diào)試的選項(xiàng)。傳統(tǒng)意義上,這些選項(xiàng)包括一些有助于調(diào)試請(qǐng)求的關(guān)鍵信息元素。這些變量包括:緩存狀態(tài)和緩存位置、事務(wù)ID、緩存密鑰等。
緩存狀態(tài)和位置 - 緩存狀態(tài)和位置通常由“X-Cache”標(biāo)頭中包含的響應(yīng)顯示。在這里,開發(fā)者將收到有關(guān)對(duì)象緩存狀態(tài)的信息以及該對(duì)象的位置(對(duì)于多層內(nèi)容傳送網(wǎng)絡(luò))。緩存狀態(tài)的值通常包括:
Miss - 對(duì)象不在緩存中。這通常意味著系統(tǒng)通過不斷返回原點(diǎn)來檢索有用的東西來服務(wù)對(duì)象。
Hit-Stale - Cache中的對(duì)象,但需要對(duì)目標(biāo)對(duì)象進(jìn)行新鮮度檢查。通常在304請(qǐng)求之前驗(yàn)證對(duì)象的新鮮度。
Hit-Fresh - 緩存中的對(duì)象,從緩存中提供服務(wù)。
Skipped?- 緩存查找被跳過。如果配置定義了緩存旁路,通常會(huì)執(zhí)行此操作。
“X-Cache”響應(yīng)中的附加信息是使用上述緩存信息進(jìn)行響應(yīng)的服務(wù)器的名稱。通過在同一個(gè)響應(yīng)頭中附加多個(gè)響應(yīng),CDN通常能夠呈現(xiàn)一個(gè)對(duì)象的整個(gè)請(qǐng)求流。
例如,下面的響應(yīng)將指示對(duì)象不在第一位置的高速緩存中;位于第二個(gè)位置的高速緩存中的對(duì)象是過時(shí)的,而在第三個(gè)位置的高速緩存中是新的。
【X-Cache:Miss ?server01.ats.lga.foo.com ; Hit-Stale ?server03.ats.lga.foo.com ; Hit-Fresh ?server01.ats.yyz.foo.com 】
作為此調(diào)試頭的結(jié)果,您可以通過CDN查看這個(gè)對(duì)象的流程,并了解事件對(duì)您的個(gè)人請(qǐng)求的影響。最終數(shù)據(jù)在位于多倫多(YYZ)節(jié)點(diǎn)的父級(jí)緩存中進(jìn)行處理。
Transaction ID - 由“X-Transaction-ID”指定,該值通常提供一個(gè)唯一的字符串,用于識(shí)別日志中的事務(wù)。這樣就可以追溯分析請(qǐng)求,以準(zhǔn)確地追蹤單個(gè)資產(chǎn)的特定請(qǐng)求。在嘗試確定特定對(duì)象在整個(gè)CDN工作流程中的行為方式以及診斷配置可能出現(xiàn)的任何問題時(shí),此功能非常有用。
Cache Key - 緩存鍵可能是您可以評(píng)估的最有用的調(diào)試頭。通過所提供的CDN解釋和緩存對(duì)象的確切方式,您可以查看事件是否根據(jù)特定的請(qǐng)求進(jìn)行了適當(dāng)?shù)呐渲谩?/span>
例如,假設(shè)您正在從可緩存對(duì)象中刪除查詢字符串以提高緩存效率。雖然對(duì)該對(duì)象的請(qǐng)求可能是 http://www.bar.com/page/uri.jpg?123456 ,但從緩存鍵中刪除查詢參數(shù)應(yīng)該會(huì)導(dǎo)致與x-cache-key頭不同的響應(yīng)。在這種情況下,緩存鍵應(yīng)該是:
【X-Cache-Key: origin.bar.com/page/uri.jpg 】
如果您有一個(gè)更復(fù)雜的設(shè)置,X-Cache-Key也可為您帶來幫助。假設(shè)您正在使用不同的字符串匹配來替換對(duì)象中的路徑。通過查看緩存鍵您可以確保路徑替換按照預(yù)期進(jìn)行,從而確保針對(duì)此特定設(shè)置請(qǐng)求的任何資源請(qǐng)求流程順暢。
這種情況的一個(gè)示例是,如果您的配置調(diào)用的是上面URI中的/page/,則在請(qǐng)求返回到原點(diǎn)時(shí)將其剝離,并用/home/替換。在這種情況下,X-Cache-Key響應(yīng)如下所示:
【X-Cache-Key: origin.bar.com/home/uri.jpg 】
隨著正則表達(dá)式配置和高級(jí)選項(xiàng)的復(fù)雜性的增加,X-Cache-Key特性成為確保CDN正確處理對(duì)象的關(guān)鍵因素。
有關(guān)Debug Headers的更多信息
CDN調(diào)試頭的用途和種類很多。每個(gè)CDN的獨(dú)特之處使得記憶這些選項(xiàng)和解釋變得困難。
雖然有企業(yè)正在致力于將這些更好地標(biāo)準(zhǔn)化這些請(qǐng)求和選項(xiàng),但作為CDNi在互聯(lián)網(wǎng)工程任務(wù)組工作的一部分,這些頭文件在多個(gè)不同平臺(tái)上的成熟度仍舊為內(nèi)容交付專家留下了一個(gè)雜亂無章的選項(xiàng)。
為了更好地指導(dǎo)您使用這些響應(yīng)頭文件,下面是許多流行的商業(yè)內(nèi)容交付網(wǎng)絡(luò)的示例。
Akamai Pragma Headers:?
https://community.akamai.com/customers/s/article/Using-Akamai-Pragma-headers-to-investigate-or-troubleshoot-Akamai-content-delivery?language=en_US
Fastly Debug Headers:
https://support.fastly.com/hc/en-us/community/posts/360040167211-Deciphering-Fastly-Debug-header
Limelight Debug Headers:
https://slideplayer.com/slide/3116110/
Catchpoint blog:
http://blog.catchpoint.com/2017/02/27/debugging-cdns-need-change/
LiveVideoStack? 招募
LiveVideoStack正在招募編輯/記者/運(yùn)營,與全球頂尖多媒及技術(shù)專家和LiveVideoStack年輕的伙伴一起,推動(dòng)多媒體技術(shù)生態(tài)發(fā)展。了解崗位信息請(qǐng)?jiān)贐OSS直聘上搜索“LiveVideoStack”,或通過微信“Tony_Bao_”與主編包研交流。
點(diǎn)擊【閱讀原文】或掃描圖中二維碼,即刻了解更多大會(huì)講師及分享內(nèi)容信息!
總結(jié)
以上是生活随笔為你收集整理的CDN调试—Debug Headers的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ALHLS:Apple低延迟HLS技术
- 下一篇: Instagram:如何提升音乐音频质量