日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

ATS 5.2.1中Background-Fetch插件调研笔记

發(fā)布時間:2023/11/27 生活经验 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ATS 5.2.1中Background-Fetch插件调研笔记 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

簡介

這是Apache Traffic Server(簡稱ATS)中的一個插件, 允許你從源站主動獲取Object內(nèi)容并填充到緩存中, 當(dāng)你的所有或是大部分client request都是byte-ranged類型時, 這特別有用. 目前ATS并不能緩存byte0-range類型的request/response.

功能

檢查回源的響應(yīng), 在原始的(客戶端)請求滿足下面條件時, 是否觸發(fā)一條background fetch操作:

  • 目前只支持GET請求
  • 響應(yīng)是206狀態(tài)碼
  • 通過接口TSHttpTxnIsCacheable()判斷響應(yīng)是否可緩存

一旦確定要執(zhí)行一次background fetch, 我們將去掉Range頭, replay客戶端請求, 再次通過Traffic Server的Proxy功能, 去回源請求, 這對于original request是透明的, 它會繼續(xù)進行并不受任何影響.確保每個url最多只能有一次background fetch, 以免給Original Server意外增加額外的壓力.

開啟插件

在編譯時, 開啟如下配置選項,就會將plugings/experimental目錄下面所有的模塊的動態(tài)庫都編譯和安裝進系統(tǒng)中

autoconf -i
./configure --enable-experimental-plugins
make

該插件既可以作為一個global插件,也可以作為一個per remap插件, 它后面帶一個參數(shù)來指定配置文件的路徑, 可以是絕對路徑,也可以是相對于安裝目錄的路徑.
使用方法:
1.in global mode
在plugin.config中添加一行

background_fetch.so –config background_fetch.config

2.in per remap mode
在remap.config中添加如下到一行特定的改寫規(guī)則后面, 也就是可以實現(xiàn)對單條轉(zhuǎn)發(fā)規(guī)則使用

@plugin=background_fetch.so @pparm=background_fetch.config

配置文件的內(nèi)容

配置文件background_fetch.config中基于任意的Http header or Client-ip, 可以指定包含(include)或是排除(exclude)的規(guī)則, 比如

include User-Agent ABCDEF
exclude User-Agent *
exclude Content-Type text
exclude X-Foo-Bar text
exclude ip  1.2.3.4
exclude Client-IP *
exclude Content-Length <1000

尚待添加的功能

限制對某些大小的內(nèi)容的background fetch

源碼分析

和其他插件一樣的代碼結(jié)構(gòu), 這里只添加了一個READ_HTTP_RESPONSE_HDR Hook, 下面是基本的函數(shù)調(diào)用流程

TSPluginInit() ==> cont_handle_response() ==> is_background_fetch_allowed() ==> 
check_field_configured() ==> check_field_configured()\\>cont_check_cacheable()==> data->initialize()\\>data->schedule()

對每個符合要求的http transaction, 會生成一個名為BGFetchData的continuation, 它的回調(diào)函數(shù)是cont_bg_fetch()
另外里面定義了幾個數(shù)據(jù)結(jié)構(gòu):
static BgFetchRuleMap是一個全局的配置項數(shù)據(jù)結(jié)構(gòu)
BGFetchConfig類定義了針對每個url的預(yù)取配置, BGFetchData類會引用它
插件一啟動時會首先調(diào)用BGFetchConfig()來讀取配置文件, 如果沒有指定的配置文件,就使用全局的.

總結(jié)

以上是生活随笔為你收集整理的ATS 5.2.1中Background-Fetch插件调研笔记的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。