ATS巧玩兒緩存策略增長動態服務吞吐量

緩存有個大原則,就是在不影響用戶、不觸犯法律的前提下,儘可能多的將資源緩存到本地。哪些HTTP資源能夠cache哪些不能cache,ATS對可緩存性有一套系統的判斷機制,設置靈活,能夠對全局進行配置也能夠對個別資源單獨配置,能夠針對單個url進行配置也能夠針對文件後綴類型進行配置,能夠對正常資源進行配置也能夠對故障信息(狀態碼400以上)進行配置,能夠對靜態資源進行配置也能夠對動態資源單獨配置,如今就剖開看一下

web

1、HTTP響應頭信息配置緩存級別
任何cache系統大多數資源都是經過HTTP頭信息來判斷是否可緩存的,ATS一樣如此,此頭信息的配置是資源是否cache的一個必要條件,而且根據頭部信息的狀況將資源分爲3個級別,分別是:
二、有明確的緩存生命週期,具體表現是響應頭裏有expires(到什麼時間過時)或者有Cache-Control:max-age,這種設置對用戶最負責任,不會出錯,咱們線上ATS默認使用這個級別;
一、有Last-Modified頭或者有明確的緩存生命週期,這個級別就要鬆一些了,即便資源沒有明確的緩存週期,可是經過Last-Modified頭結合ATS自身的算法機制(引進了老化因子的概念)計算出緩存時間,對資源進行緩存;
0、在級別1的基礎上,對沒有明確頭部信息的資源,默認存入本地緩存,而後每次if-modified-since回源。
      具體對應的配置以下:
      proxy.config.http.cache.required_headers  0|1|2    (0是無要求,1是有Last-Modified頭或者有明確的緩存生命週期,2是有明確的緩存生命週期)

此爲ATS全部內容是否可緩存的必要條件。 
 
2、動態內容是否緩存
ATS不會像人同樣經過理性判斷去肯定資源是否爲動態,他對動靜態資源的判斷徹底是依賴url特徵匹配,咱們線上的默認配置是不緩存,對應的配置參數是:
      proxy.config.http.cache.cache_urls_that_look_dynamic   0|1  (0是不緩存,1是可緩存) 
 此爲動態內容ATS是否可緩存的必要條件。
3、帶cookie的資源是否緩存
web2.0的網站中,不少資源帶有cookie,對於cookie的信息是否緩存,如何緩存才能不影響用戶質量考驗着cache系統的性能,ATS對於cookie的設置分5個級別:

      proxy.config.http.cache.cache_responses_to_cookies INT  0|1|2|3|4 
0、任何帶cookie的資源都不緩存;
一、任何帶cookie的資源都緩存;
二、只緩存是圖片的cookie資源;
三、除了文本類型其他的cookie資源都緩存。
四、除了系統響應的沒有」Set-Cookie」或者有」Cache-Control:public」的文本類型其他的cookie資源都緩存。(咱們線上設備的默認配置級別)
 此爲cookie內容ATS是否可緩存的必要條件。
4、故障信息是否緩存
所謂故障信息指的是源站返回的4XX、5XX等錯誤代碼,對於故障信息是否緩存是存在爭議的,ATS在處理上將故障信息分爲兩類,一類是帶有明確生命週期的故障,另外一類是沒帶有生命週期的故障,配置的參數以下:
        proxy.config.http.negative_caching_enabled  0|1  (1對全部故障信息都緩存,0是隻緩存有明確生命週期的故障信息,線上默認使用的是0)
        proxy.config.http.negative_caching_lifetime   2s   (對有明確緩存生命週期的故障信息的緩存時間,能夠根據時間時間設置,目前線上默認改成2s) 

算法

相關文章
相關標籤/搜索