天天看點

CDN調試—Debug HeadersDebug Headers背景Debug Header示例有關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消息頭,以及這些消息頭是如何影響緩存的。為了能有效地幫助我們了解在不同内容分發網絡(CDN)世界中緩存對象的位置以及如何實作緩存,這些隻是其中的第一個建構塊。若想透徹了解CDN中發生的一切,真正關鍵在于熟練掌握調試頭檔案。

這些友善的工具可讓您充分利用Content Delivery Network的每項特性,雖然其中一些調試頭檔案十分容易在每個請求上被釋出,但某些CDN隻有在一些特定請求頭檔案存在時才會附加一部分調試頭檔案。為了安全起見,CDN有時甚至需要額外的請求頭檔案、自定義密鑰與請求一起傳遞,以便確定合适的調試頭檔案被接收。

盡管最終接收的這些調試頭檔案相對來說較為簡單,但響應中資訊傳回所需要的實際解釋可能會為開發者帶來不小的挑戰。在某些情況下,開發者需要詳細參考CDN指南,這些指南詳盡闡述了每個标題的含義。在其他情況下,單個字元可能提供大量資料,這些資料隻能通過Internet規範加以解釋。

在本篇文章中,我将探讨這些調試頭檔案的常見優點,其所能提供的資訊以及解釋這些資料的最佳思路。盡管我們會在本文中關注Apache Traffic Server的調試頭檔案,但這不影響我們提供指向某些CDN的連結并讨論他們自己的調試頭檔案,以便為CDN調試的所有相關内容提供全面指導。

Debug Header示例

通過在對象請求中顯示“X-Debug”,Apache Traffic Server(當使用适當的軟體包進行設定時)将響應一部分龐大的基于調試的選項。傳統意義上,這些選項包括一些有助于調試請求的關鍵資訊元素。這些變量包括:緩存狀态和緩存位置、事務ID、緩存密鑰等。

緩存狀态和位置 - 緩存狀态和位置通常由“X-Cache”标頭中包含的響應顯示。在這裡,開發者将收到有關對象緩存狀态的資訊以及該對象的位置(對于多層内容傳送網絡)。緩存狀态的值通常包括:

  • Miss - 對象不在緩存中。這通常意味着系統通過不斷傳回原點來檢索有用的東西來服務對象。
  • Hit-Stale - Cache中的對象,但需要對目标對象進行新鮮度檢查。通常在304請求之前驗證對象的新鮮度。
  • Hit-Fresh - 緩存中的對象,從緩存中提供服務。
  • Skipped - 緩存查找被跳過。如果配置定義了緩存旁路,通常會執行此操作。

“X-Cache”響應中的附加資訊是使用上述緩存資訊進行響應的伺服器的名稱。通過在同一個響應頭中附加多個響應,CDN通常能夠呈現一個對象的整個請求流。

例如,下面的響應将訓示對象不在第一位置的高速緩存中;位于第二個位置的高速緩存中的對象是過時的,而在第三個位置的高速緩存中是新的。

【X-Cache:Miss  server01.ats.lga.foo.com ; Hit-Stale  server03.ats.lga.foo.com ; Hit-Fresh  server01.ats.yyz.foo.com 】

作為此調試頭的結果,您可以通過CDN檢視這個對象的流程,并了解事件對您的個人請求的影響。最終資料在位于多倫多(YYZ)節點的父級緩存中進行處理。

Transaction ID - 由“X-Transaction-ID”指定,該值通常提供一個唯一的字元串,用于識别日志中的事務。這樣就可以追溯分析請求,以準确地追蹤單個資産的特定請求。在嘗試确定特定對象在整個CDN工作流程中的行為方式以及診斷配置可能出現的任何問題時,此功能非常有用。

Cache Key - 緩存鍵可能是您可以評估的最有用的調試頭。通過所提供的CDN解釋和緩存對象的确切方式,您可以檢視事件是否根據特定的請求進行了适當的配置。

例如,假設您正在從可緩存對象中删除查詢字元串以提高緩存效率。雖然對該對象的請求可能是

http://www.bar.com/page/uri.jpg?123456

,但從緩存鍵中删除查詢參數應該會導緻與x-cache-key頭不同的響應。在這種情況下,緩存鍵應該是:

【X-Cache-Key: origin.bar.com/page/uri.jpg 】

如果您有一個更複雜的設定,X-Cache-Key也可為您帶來幫助。假設您正在使用不同的字元串比對來替換對象中的路徑。通過檢視緩存鍵您可以確定路徑替換按照預期進行,進而確定針對此特定設定請求的任何資源請求流程順暢。

這種情況的一個示例是,如果您的配置調用的是上面URI中的/page/,則在請求傳回到原點時将其剝離,并用/home/替換。在這種情況下,X-Cache-Key響應如下所示:

【X-Cache-Key: origin.bar.com/home/uri.jpg 】

随着正規表達式配置和進階選項的複雜性的增加,X-Cache-Key特性成為確定CDN正确處理對象的關鍵因素。

有關Debug Headers的更多資訊

CDN調試頭的用途和種類很多。每個CDN的獨特之處使得記憶這些選項和解釋變得困難。

雖然有企業正在緻力于将這些更好地标準化這些請求和選項,但作為CDNi在網際網路工程任務組工作的一部分,這些頭檔案在多個不同平台上的成熟度仍舊為内容傳遞專家留下了一個雜亂無章的選項。

為了更好地指導您使用這些響應頭檔案,下面是許多流行的商業内容傳遞網絡的示例。

  • 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/

————————————————

版權聲明:本文為CSDN部落客「LiveVideoStack_」的原創文章,遵循CC 4.0 BY-SA版權協定,轉載請附上原文出處連結及本聲明。

原文連結:

https://blog.csdn.net/vn9PLgZvnPs1522s82g/article/details/94683714
「視訊雲技術」你最值得關注的音視訊技術公衆号,每周推送來自阿裡雲一線的實踐技術文章,在這裡與音視訊領域一流工程師交流切磋。
CDN調試—Debug HeadersDebug Headers背景Debug Header示例有關Debug Headers的更多資訊