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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

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

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

簡介

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

功能

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

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

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

開啟插件

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

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

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

background_fetch.so –config background_fetch.config

2.in per remap mode
在remap.config中添加如下到一行特定的改寫規則后面, 也就是可以實現對單條轉發規則使用

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

配置文件的內容

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

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

尚待添加的功能

限制對某些大小的內容的background fetch

源碼分析

和其他插件一樣的代碼結構, 這里只添加了一個READ_HTTP_RESPONSE_HDR Hook, 下面是基本的函數調用流程

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, 它的回調函數是cont_bg_fetch()
另外里面定義了幾個數據結構:
static BgFetchRuleMap是一個全局的配置項數據結構
BGFetchConfig類定義了針對每個url的預取配置, BGFetchData類會引用它
插件一啟動時會首先調用BGFetchConfig()來讀取配置文件, 如果沒有指定的配置文件,就使用全局的.

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。