Web快取基礎 術語 HTTP報頭和快取策略

2022-08-12 05:42:10 字數 3023 閱讀 8046

對於您的站點的訪問者來說,智慧型化的內容快取是提高使用者體驗最有效的方式之一。快取,或者對之前的請求的臨時儲存,是http協議實現中最核心的內容分發策略之一。分發路徑中的元件均可以快取內容來加速後續的請求,這受控於對該內容所宣告的快取策略。

在這份指南中,我們將討論一些web內容快取的基本概念。這主要包括如何選擇快取策略以保證網際網路範圍內的快取能夠正確的處理您的內容。我們將談一談快取帶來的好處、***以及不同的策略能帶來的效能和靈活性的最大結合。

這份指南的主要講述的web快取是一種不同型別的快取。web快取是http協議的乙個核心特性,它能最小化網路流量,並且提公升使用者所感知的整個系統響應速度。內容從伺服器到瀏覽器的傳輸過程中,每個層面都可以找到快取的身影。

web快取根據特定的規則快取相應http請求的響應。對於快取內容的後續請求便可以直接由快取滿足而不是重新傳送請求到web伺服器。

有效的快取技術不僅可以幫助使用者,還可以幫助內容的提供者。快取對內容分發帶來的好處有:

在面對快取時,您可能對一些經常遇到的術語可能不太熟悉。一些常見的術語如下:

還有許多其他的快取術語,不過上面的這些應該能幫助您開始。

某些特定的內容比其他內容更容易被快取。對大多數站點來說,一些適合快取的內容如下:

這些檔案更傾向於不經常改變,所以長時間的對它們進行快取能獲得好處。

一些專案在快取中必須加以注意:

一些內容從來不應該被快取:

除上面的通用規則外,通常您需要指定一些規則以便於更好地快取不同種類的內容。例如,如果登入的使用者都看到的是同樣的**檢視,就應該在任何地方快取這個頁面。如果登入的使用者會在一段時間內看到站點中使用者特定的檢視,您應該讓使用者的瀏覽器快取該資料而不應讓任何中介節點快取該檢視。

web內容會在整個分發路徑中的許多不同的位置被快取:

上面的這些位置通常都可以根據它們自身的快取策略和內容源的快取策略快取一些相應的內容。

快取策略依賴於兩個不同的因素。所快取的實體本身需要決定是否應該快取可接受的內容。它可以只快取部分可以快取的內容,但不能快取超過限制的內容。

快取行為主要由快取策略決定,而快取策略由內容擁有者設定。這些策略主要通過特定的http頭部來清晰地表達。

經過幾個不同http協議的變化,出現了一些不同的針對快取方面的頭部,它們的複雜度各不相同。下面列出了那些你也許應該注意的:

在使用accept-encoding時,設定vary頭部允許明確區分壓縮和未壓縮的內容。這在服務某些不能處理壓縮資料的瀏覽器時很重要,它可以保證基本的可用性。vary的乙個典型的值是accept-encoding,它只有兩到三個可選的值。

一開始看上去user-agent這樣的頭部可以用於區分移動瀏覽器和桌面瀏覽器,以便您的站點提供差異化的服務。但user-agent字串是非標準的,結果將會造成在中間快取中儲存同一內容的許多不同版本的快取,這會導致快取命中率的降低。vary頭部應該謹慎使用,尤其是您不具備在您控制的中間快取中使請求標準化的能力(也許可以,比如您可以控制cdn的話)。

上面我們提到了cache-control頭部如何被用與現代快取策略標準。能夠通過這個頭部設定許多不同的快取指令,多個不同的指令通過逗號分隔。

一些您可以使用的指示內容快取策略的cache-control的選項如下:

no-store:這條指令指示快取的內容不能以任何方式被快取。它適合在回覆敏感資訊時設定。

public:它將內容標記為公有的,這意味著它能被瀏覽器和其他任何中間節點快取。通常,對於使用了http驗證的請求,其回覆被預設標記為private。public標記將會覆蓋這個設定。

s-maxage:這個選項非常類似於max-age,它指明了內容能夠被快取的時間。區別是這個選項只在中間節點的快取中有效。結合這兩個選項可以構建更加靈活的快取策略。

must-revalidate:它指明了由max-age、s-maxage或expires頭部指明的新鮮度資訊必須被嚴格的遵守。它避免了快取的資料在網路中斷等類似的場景中被使用。

no-transform:這個選項告訴快取在任何情況下都不能因為效能的原因修改接收到的內容。這意味著,快取不允許壓縮接收到的內容(沒有從原始伺服器處接收過壓縮版本的該內容)並傳送。

這些選項能夠以不同的方式結合以獲得不同的快取行為。一些互斥的值如下:

public和private

如果no-store和no-cache都被設定,那麼no-store會取代no-cache。對於非授權的請求的回覆,public是隱含的設定。對於授權的請求的回覆,private選項是隱含的。他們可以通過在cache-control頭部中指明相應的相反的選項以覆蓋。

在理想情況下,任何內容都可以被盡可能快取,而您的伺服器只需要偶爾的提供一些驗證內容即可。但這在現實中很少發生,因此您應該嘗試設定一些明智的快取策略,以在長期快取和站點改變的需求間達到平衡。

在許多情況中,由於內容被產生的方式(如根據每個使用者動態的產生)或者內容的特性(例如銀行的敏感資料),這些內容不應該被快取。另一些許多管理員在設定快取時可能面對的問題是外部快取的資料未過期,但新版本的資料已經產生。

這些都是經常遇到的問題,它們會影響快取的效能和您提供的資料的準確性。然而,我們可以通過開發提前預見這些問題的快取策略來緩解這些問題。

儘管您的實際情況會指導您選擇的快取策略,但是下面的建議能幫助您獲得一些合理的決定。

在您擔心使用哪乙個特定的頭部之前,有一些特定的步驟可以幫助您提高您的快取命中率。一些建議如下:

對於不同的檔案正確地選擇不同的頭部這件事,下面的內容可以作為一般性的參考:

關鍵之處便在於達到平衡,一方面可以盡量的進行快取,另一方面為未來保留當改變發生時從而改變整個內容的機會。您的站點應該同時具有:

這樣做的目的便是將內容盡可能的移動到第乙個分類(盡量快取)中的同時,維持可以接受的快取命中率。

花時間確保您的站點使用了合適的快取策略將對您的站點產生重要的影響。快取使得您可以在保證服務同樣內容的同時減少頻寬的使用。您的伺服器因此可以靠同樣的硬體處理更多的流量。或許更重要的是,客戶們能在您的**中獲得更快的體驗,這會使得他們更願意頻繁的訪問您的站點。儘管有效的web快取並不是銀彈,但設定合適的快取策略會使您以最小的代價獲得可觀的收穫。

web快取之 http快取機制

一 web快取可以分為資料庫快取 伺服器快取 瀏覽器快取。二 http快取是通過頭資訊控制快取。a.分為強快取和協商快取兩種。b.強快取如果命中,則不需要和伺服器發生互動。c.協商快取不管是否命中,都要和伺服器發生互動。d.強快取的優先順序高於協商快取。三 強快取。a.可以理解為無需驗證的快取策略。...

Web前端基礎技術(術語介紹)

web world wide web 即全球廣域網,萬維 網。它是種基於超文字和http的 全球性的 動態互動的 跨平台的分布式圖形資訊系統。簡單來說,web服務就是提供我們通過瀏覽器訪問的 系統。前端 的客戶端使用者計算機上展示的部分,負責 的展示 互動等。http 超文字傳輸協議 hyperte...

Web 快取與 HTTP 狀態碼

瀏覽器快取 瀏覽器可以快取伺服器給它傳輸的資訊,那麼瀏覽器是怎麼判斷需不需要快取的呢?通過什麼來判斷?什麼情況下訪問 伺服器什麼情況下訪問源伺服器?1 http 快取 這裡就涉及了http 快取機制,但 http 快取不僅涉及瀏覽器還應有 快取伺服器,http 快取體系大致可以分為快取儲存策略 快取...