緩存有個(gè)大原則,就是在不影響用戶、不觸犯法律的前提下,盡量多的將資源緩存到本地。哪些HTTP資源可以cache哪些不能cache,ATS對(duì)可緩存性有一套系統(tǒng)的判斷機(jī)制,設(shè)置靈活,可以對(duì)全局進(jìn)行配置也可以對(duì)個(gè)別資源單獨(dú)配置,可以針對(duì)單個(gè)url進(jìn)行配置也可以針對(duì)文件后綴類型進(jìn)行配置,可以對(duì)正常資源進(jìn)行配置也可以對(duì)故障信息(狀態(tài)碼400以上)進(jìn)行配置,可以對(duì)靜態(tài)資源進(jìn)行配置也可以對(duì)動(dòng)態(tài)資源單獨(dú)配置,現(xiàn)在就剖開看一下。
一、HTTP響應(yīng)頭信息配置緩存級(jí)別
任何cache系統(tǒng)大多數(shù)資源都是通過HTTP頭信息來判斷是否可緩存的,ATS同樣如此,此頭信息的配置是資源是否cache的一個(gè)必要條件,并且根據(jù)頭部信息的情況將資源分為3個(gè)級(jí)別,分別是:
2、有明確的緩存生命周期,具體表現(xiàn)是響應(yīng)頭里有expires(到什么時(shí)間過期)或者有Cache-Control:(max-age、no-cache),這種設(shè)置對(duì)用戶最負(fù)責(zé)任,不會(huì)出錯(cuò),我們線上ATS默認(rèn)使用這個(gè)級(jí)別;
1、有Last-Modified頭或者有明確的緩存生命周期,這個(gè)級(jí)別就要松一些了,即使資源沒有明確的緩存周期,但是通過Last-Modified頭結(jié)合ATS自身的算法機(jī)制(引進(jìn)了老化因子的概念)計(jì)算出緩存時(shí)間,對(duì)資源進(jìn)行緩存,存多久看后面的第五條;
0、在級(jí)別1的基礎(chǔ)上,對(duì)沒有明確頭部信息的資源,默認(rèn)存入本地緩存,存多久見后面第五條,然后每次if-modified-since回源。
具體對(duì)應(yīng)的配置如下:
proxy.config.http.cache.required_headers 0|1|2 (0是無要求,1是有Last-Modified頭或者有明確的緩存生命周期,2是有明確的緩存生命周期)
此為ATS所有內(nèi)容是否可緩存的必要不充分條件。
二、動(dòng)態(tài)內(nèi)容是否緩存
ATS不會(huì)像人一樣通過理性判斷去確定資源是否為動(dòng)態(tài),他對(duì)動(dòng)靜態(tài)資源的判斷完全是依賴url特征匹配,我們線上的默認(rèn)配置是不緩存,對(duì)應(yīng)的配置參數(shù)是:
proxy.config.http.cache.cache_urls_that_look_dynamic 0|1 (0是不緩存,1是可緩存)
此為動(dòng)態(tài)內(nèi)容ATS是否可緩存的必要不充分條件。
三、帶cookie的資源是否緩存
web2.0的網(wǎng)站中,很多資源帶有cookie,對(duì)于cookie的信息是否緩存,如何緩存才能不影響用戶質(zhì)量考驗(yàn)著cache系統(tǒng)的性能,ATS對(duì)于cookie的設(shè)置分5個(gè)級(jí)別:
proxy.config.http.cache.cache_responses_to_cookies INT 0|1|2|3|4
0、任何帶cookie的資源都不緩存;
1、任何帶cookie的資源都緩存;
2、只緩存是圖片的cookie資源;
3、除了文本類型其余的cookie資源都緩存。
4、除了系統(tǒng)響應(yīng)的沒有”Set-Cookie”或者有”Cache-Control:public”的文本類型其余的cookie資源都緩存。(我們線上設(shè)備的默認(rèn)配置級(jí)別)
此為cookie內(nèi)容ATS是否可緩存的必要不充分條件。
四、故障信息是否緩存
所謂故障信息指的是源站返回的4XX、5XX等錯(cuò)誤代碼,對(duì)于故障信息是否緩存是存在爭議的,ATS在處理上將故障信息分為兩類,一類是帶有明確生命周期的故障,另一類是沒帶有生命周期的故障,配置的參數(shù)如下:
proxy.config.http.negative_caching_enabled 0|1 (1對(duì)所有故障信息都緩存,0是只緩存有明確生命周期的故障信息,線上默認(rèn)使用的是0)
proxy.config.http.negative_caching_lifetime 2s (對(duì)有明確緩存生命周期的故障信息的緩存時(shí)間,可以根據(jù)時(shí)間時(shí)間設(shè)置,目前線上默認(rèn)改為2s)
五、對(duì)于請(qǐng)求頭、響應(yīng)頭中無任何緩存說明的信息資源
對(duì)于這種信息ats是通過proxy.config.http.cache.required_headers頭再加上默認(rèn)時(shí)間指令來控制的,比如header頭設(shè)置的是0級(jí)別,就是說對(duì)于頭部信息設(shè)置最寬松的策略,這時(shí)一個(gè)請(qǐng)求,如果沒有Cache-control、expires、Last-Modified這些字段,但是有Last-Modified頭的話,是通過最小化因子計(jì)算緩存時(shí)間,對(duì)應(yīng)指令和計(jì)算方式如下:
proxy.config.http.cache.heuristic_lm_factor FLOAT 0.100000 (緩存時(shí)間=當(dāng)前時(shí)間減Last-Modified時(shí)間*0.1)
對(duì)于連Last-Modified頭都沒有的信息,是通過默認(rèn)存儲(chǔ)時(shí)間去計(jì)算的,這個(gè)nginx的判斷邏輯有點(diǎn)類似,不過nginx對(duì)于緩存與否是全部判斷了后再操作,但ats是存不存和存多久是分開的,哪怕存儲(chǔ)時(shí)間為0也會(huì)存一下,這兩條指令如下:
proxy.config.http.cache.heuristic_min_lifetime INT 3600
proxy.config.http.cache.heuristic_max_lifetime INT 17280000
單位是秒,也就是說對(duì)這種沒任何緩存說明信息的資源最小存3600秒,大存17280000秒。
其實(shí)對(duì)于線上環(huán)境這三條指令都是用不到的,因?yàn)槲覀儼裩eader頭的級(jí)別設(shè)置為了2。
綜上所述:對(duì)于ats而言,存儲(chǔ)設(shè)置是很靈活的,可以對(duì)各類資源單獨(dú)設(shè)置,如果覺得還不夠還可以在cache.config(影響cache-control字段)對(duì)單個(gè)資源進(jìn)行設(shè)置。當(dāng)然每一環(huán)都是有邏輯的,我舉個(gè)例子,現(xiàn)在比如我想要對(duì)除了授權(quán)類型的所有資源進(jìn)行強(qiáng)制緩存10天,而且緩存期間不回源,可以這么設(shè)置:
traffic_line -s proxy.config.http.cache.cache_urls_that_look_dynamic -v 1
traffic_line -s proxy.config.http.cache.cache_responses_to_cookies -v 1
traffic_line -s proxy.config.http.cache.required_headers -v 0
traffic_line -s proxy.config.http.cache.heuristic_min_lifetime -v 8640000
traffic_line -s proxy.config.http.cache.heuristic_max_lifetime -v 8640000
traffic_line -s proxy.config.http.cache.heuristic_lm_factor -v 0.5
traffic_line -s proxy.config.http.cache.when_to_revalidate -v 3
cache.config url_regex=.* scheme=http ttl-in-cache=240h
自建個(gè)人原創(chuàng)站運(yùn)維網(wǎng)咖社(www.net-add.com),新的博文會(huì)在個(gè)人站更新,歡迎瀏覽。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
當(dāng)前標(biāo)題:透過ATS緩存配置看如何判斷HTTP資源是否可緩存方法論-創(chuàng)新互聯(lián)
標(biāo)題路徑:http://chinadenli.net/article28/ejcjp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供動(dòng)態(tài)網(wǎng)站、標(biāo)簽優(yōu)化、企業(yè)網(wǎng)站制作、云服務(wù)器、企業(yè)建站、域名注冊(cè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容