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