首页 > 分享 > 新手ATS缓存在线视频配置

新手ATS缓存在线视频配置

2013年5月8日     浏览数:11,393 发表评论 阅读评论

本文测试环境为centos6.

ats缓存在线视频需要借助cacheurl这个插件,可以参考豪哥的主页:http://people.apache.org/~zym/trafficserver/cacheurl.html

注意项

注意ats配置上这项,之前安装脚本没有添加到这项。

traffic_line -s proxy.config.http.cache.required_headers -v 0

traffic_line -x

一、下载编译安装cacheurl

1.从git中获取cacheurl插件

cacheurl插件在新版的ats中有,如通过git clone下载的ats里面就有这个plugins:

git clone https://git-wip-us.apache.org/repos/asf/trafficserver.git

插件源码目录:trafficserver/plugins/experimental/cacheurl。
2.单独下载安装

下载地址:https://blog.zymlinux.net/softs/cacheurl.tar.gz

如果上面的安装都有问题,那就下载这个试试:http://pan.baidu.com/share/link?shareid=380294&uk=1006710124

编译安装方式:
首先进入插件目录,使用ats自带的工具编译安装:

tsxs -c cacheurl.c -o cacheurl.so
tsxs -i -o cacheurl.so

默认将会安装到/usr/local/libexec/trafficserver/目录下。

二、配置cacheurl

(下面配置路径为默认安装情况)

1.配置ats加载cacheurl插件:

echo "cacheurl.so" >>/usr/local/etc/trafficserver/plugin.config

2.配置cacheurl规则

复制下面这块代码执行一下即可。

cat > /usr/local/libexec/trafficserver/cacheurl.config<< "EOF"
http://[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}[^&]*/f4v/.*id=tudou.itemid\=([0-9]*).* http://www.tudou.com/$1
http://[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}[^&]*/flv/.*id=tudou.itemid\=([0-9]*).* http://www.tudou.com/$1
http://[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}/youku/.*/(.*-.*-.*-.*-[^?]*)(.*) http://www.youku.com/$1
http://[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}/sohu/[0-9]*/[0-9]*/[0-9]*/(.*).mp4?key=.* http://tv.sohu.com/$1.mp4
http://.*\..*\..*\..*/.*\.com/flvdownload/[[:digit:]]{1,3}/[[:digit:]]{1,3}/([^?]*)(.*) http://www.56.com/$1
http://[[:digit:]]{1,3}/mp4files/.*/.*\.com/images/tuiguang/[[:digit:]]{6,6}/(.*\.mp4) http://www.56.com/$1
http://.*\..*\.com/images/tuiguang/([[:digit:]]{6,6})/(.*\.mp4) http://www.56.com/tuiguang/$1/$2
http://[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}/mov.bn.netease.com/.*/.*/.*/.*/.*/([^?]*)(.*) http://v.163.com/$1
http://[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}/.*-.*-.*/.*/cemov.bn.netease.com/.*/.*/.*/.*/.*/([^?]*)(.*) http://v.163.com/$1
EOF

三、重启ats服务:trafficserver restart
四、验证
1.日志分析
注意注意:现在新版本已经没有log生成了!!!新版本请自行验证功能。—2014-11-06
稍等一分钟左右再查看新生成的日志:tail /usr/local/var/log/trafficserver/cacheurl.log  会看到配置的规则加载:

20130508.16h23m48s Adding pattern/replacement pair: 'http://[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}[^&]*/f4v/.*id=tudou.itemid\=([0-9]*).*' -> 'http://www.tudou.com/$1'
20130508.16h23m48s Adding pattern/replacement pair: 'http://[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}[^&]*/flv/.*id=tudou.itemid\=([0-9]*).*' -> 'http://www.tudou.com/$1'
20130508.16h23m48s Adding pattern/replacement pair: 'http://[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}/youku/.*/(.*-.*-.*-.*-[^?]*)(.*)' -> 'http://www.youku.com/$1'
20130508.16h23m48s Adding pattern/replacement pair: 'http://[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}/sohu/[0-9]*/[0-9]*/[0-9]*/(.*).mp4?key=.*' -> 'http://tv.sohu.com/$1.mp4'
20130508.16h23m48s Adding pattern/replacement pair: 'http://.*\..*\..*\..*/.*\.com/flvdownload/[[:digit:]]{1,3}/[[:digit:]]{1,3}/([^?]*)(.*)' -> 'http://www.56.com/$1'
20130508.16h23m48s Adding pattern/replacement pair: 'http://[[:digit:]]{1,3}/mp4files/.*/.*\.com/images/tuiguang/[[:digit:]]{6,6}/(.*\.mp4)' -> 'http://www.56.com/$1'
20130508.16h23m48s Adding pattern/replacement pair: 'http://.*\..*\.com/images/tuiguang/([[:digit:]]{6,6})/(.*\.mp4)' -> 'http://www.56.com/tuiguang/$1/$2'
20130508.16h23m48s Adding pattern/replacement pair: 'http://[^.]*\.[^.]*\.[^.]*\.[^/]*/videos2/[^/]*/[^/]*/([^?]*)(.*)' -> 'http://www.iqiyi.com/$1'
20130508.16h23m48s Adding pattern/replacement pair: 'http://[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}/mov.bn.netease.com/.*/.*/.*/.*/.*/([^?]*)(.*)' -> 'http://v.163.com/$1'
20130508.16h23m48s Adding pattern/replacement pair: 'http://[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}/.*-.*-.*/.*/cemov.bn.netease.com/.*/.*/.*/.*/.*/([^?]*)(.*)' -> 'http://v.163.com/$1'

然后当有视频观看的时候再查看这个日志的时候会发现有些视频url在转化了:

20130508.18h50m55s Rewriting cache URL for http://101.226.245.108/youku/65755D0A4F24483CEA1A71668F/030002070351685B233BEE04CB019FF9EDA1BF-0746-632C-C41D-BCEBFA57CABD.flv to http://www.youku.com/030002070351685B233BEE04CB019FF9EDA1BF-0746-632C-C41D-BCEBFA57CABD.flv

2.firebug分析

打开firebug插件,设置好代理,观看优酷视频测试,查看via

PS:firebug怎么找视频条目?标清版本可以点击“FLASH”选项查看,非标清版本可以点击“所有”,缓冲一段时间后点击大小排序一下,视频文件一般比较大。

第一次请求到视频文件via码是cMsSfW,正在写入缓存。

111

清空浏览器缓存再次观看,via如下cHs f,已经缓存命中。

222

 

Via码需要启用的,如果是用我写的安装脚本安装的已经配置好了。独立安装的需要执行:

traffic_line -s  proxy.config.http.insert_request_via_str -v 1
traffic_line -s  proxy.config.http.insert_response_via_str -v 2
traffic_line -x
这个Via码的添加已经在几篇文章都提到了。

配置完毕。

分类: 分享 标签: ,
  1. 七魔星呼吸
    2013年5月10日10:36 | #1

    沙发。。。哈哈

  2. fangod
    2013年5月12日14:49 | #2

    问下 能缓存文件 或者网页吗 怎么缓存 这个是透明代理吧 需要iptables吗 比方缓存360测速的文件之类的

  3. 纸鸢
    2013年5月12日15:38 | #3

    缓存文件、网页是缓存服务器最基本的功能了,ok的。透明代理,如果不是监听80端口,需要iptables把请求转发到ats监听的端口@fangod

  4. fangod
    2013年5月16日10:48 | #4

    @纸鸢
    怎么查看缓存的东西呢, 能指定吗 比方我想把360测速和QQ测速的东西缓存上 大概怎么设置呢 没接触过 英文不是太好 谢谢

  5. fangod
    2013年5月16日10:52 | #5

    @fangod
    像cf之类的常用游戏下载都可以缓存 可以大大的节省带宽 新手 学习中

  6. 纸鸢
    2013年5月16日14:44 | #6

    目前ats缓存内容查询那块功能比较弱,你可以通过http_ui查询,不过得知道具体的url才行,正则的查询经常因为缓存空间大查询超时。大家都是通过日志分析的~@fangod

  7. 纸鸢
    2013年5月16日14:45 | #7

    这个文件缓存是默认支持的,多看看blog、文档啥的就行了@fangod

  8. fangod
    2013年5月18日14:18 | #8

    一般需要多大的硬盘空间 1.5t可以吗 另外 这东西是消耗内存多些还是消耗cpu多些,正常使用环境8g内存能带200台电脑吗

  9. fangod
    2013年5月21日19:18 | #9

    [root@guo cacheurl]# tsxs -c cacheurl.c -o cacheurl.so
    compiling cacheurl.c -> cacheurl.lo
    cacheurl.c:28:24: 错误:ink_config.h:没有那个文件或目录
    cacheurl.c:38:22: 错误:ink_defs.h:没有那个文件或目录
    cacheurl.c:434: 错误:expected ‘;’, ‘,’ or ‘)’ before ‘ATS_UNUSED’
    cacheurl.c:457: 错误:expected ‘;’, ‘,’ or ‘)’ before ‘ATS_UNUSED’
    Compile failed: gcc -I/usr/local/include -g -pipe -Wall -Werror -O3 -feliminate-unused-debug-symbols -fno-strict-aliasing -fpic -c cacheurl.c -o cacheurl.lo

    tsxs cacheurl.c的时候出现的 百度不到 求问

  10. fangod
    2013年5月21日21:20 | #10

    前面两个文件找到了,后面的错误我查找说是gcc编译c++文件引起的 现在的错误是

    compiling cacheurl.c -> cacheurl.lo
    In file included from cacheurl.c:38:
    /usr/local/include/ink_defs.h:93: 错误:expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘ts’
    cacheurl.c:434: 错误:expected ‘;’, ‘,’ or ‘)’ before ‘ATS_UNUSED’
    cacheurl.c:457: 错误:expected ‘;’, ‘,’ or ‘)’ before ‘ATS_UNUSED’
    Compile failed: gcc -I/usr/local/include -g -pipe -Wall -Werror -O3 -feliminate-unused-debug-symbols -fno-strict-aliasing -fpic -c cacheurl.c -o cacheurl.lo

  11. 纸鸢
    2013年5月21日23:33 | #11

    从这里下载试试:http://pan.baidu.com/share/link?shareid=380294&uk=1006710124
    估计是版本对应的问题。@fangod

  12. fangod
    2013年5月22日10:46 | #12

    可以了 版本问题 你的版本哪里来的啊……我找不到 另外 现在的问题是 我用firefox浏览 设置代理 可以正常试用 好像youku快进后就卡在那里了 而56则没问题 我测试透明代理 用ros把我电脑的数据转到ats的80端口 结果网页可以正常打开 视频不能播放 连广告都没有…….

  13. fangod
    2013年5月22日10:47 | #13

    另外 不用代理后没办法看via了吗 firebug 看不到了就 关掉代理后

  14. fangod
    2013年5月22日10:57 | #14

    刚等了好长时间 可以看视频了…80端口转发数据 巨卡……..基本一看一顿 跟用firefox设置代理完全是两个效果 也不播广告…..

  15. fangod
    2013年5月22日11:07 | #15

    ros转发的情况下 设置firefox代理 正常了 查看via 缓存了 ros转发 看日志也重定位了 但是播放困难

  16. 纸鸢
    2013年5月22日14:19 | #16

    我那个版本是之前自己安装成功后收藏的。其他问题,我想想再回答@fangod

  17. fangod
    2013年5月22日17:10 | #17

    搞定 我把ros又加了一块网卡指定了个ip 直接连接ats 然后转发数据给ats就可以了 看记录有缓存 via不用设置代理也可以看 不过好多没有via信息的 有的有有的没有.继续查看千石翻译的admin文档

    ##############################################################################
    CONFIG proxy.config.cache.permit.pinning INT 0
    # default the ram cache size to AUTO_SIZE (-1) based on cache size
    # (approximately 1 MB of RAM cache per GB of disk cache)
    # alternatively, set to a fixed value such as 20971520 (20MB)
    CONFIG proxy.config.cache.ram_cache.size INT -1
    CONFIG proxy.config.cache.ram_cache_cutoff INT 4194304

    这里设置成-1和这个4194304 是自动调节的意思吗 看到有的说把这里加大 -1改成2048MB之类的 如果修改下面需要修改吗 这是不是最小和最大使用的内存啊

  18. fangod
    2013年5月22日17:13 | #18

    下面这个截至是什么意思呢 CONFIG proxy.config.cache.ram_cache_cutoff INT 4194304

  19. 海洋之心
    2013年5月22日21:03 | #19

    proxy.config.cache.ram_cache_cutoff 指定小于些值的尺寸存储在内存中

  20. 纸鸢
    2013年5月22日21:03 | #20

    -1是按照比例来的,1G硬盘缓存就1M内存缓存@fangod

  21. fangod
    2013年5月22日21:55 | #21

    @海洋之心
    也就是说 我把这个值设定在800mb 缓存的东西 比方一个文件 他小于800mb就缓存到内存里面 大于800mb就缓存到硬盘里面是吗

  22. fangod
    2013年5月22日21:58 | #22

    CONFIG proxy.config.cache.ram_cache.size INT 7340032000 我设置成7g内存没问题吧…..这么不会是1gb硬盘缓存7gb内存吧

  23. fangod
    2013年5月22日22:15 | #23

    对了 那个规则怎么写 有个大体的方法吗, 正则表达式吗 学习下 能大体写下怎么写规则吗 我想自己弄几个网站的规则

  24. 纸鸢
    2013年5月23日12:44 | #24

    加到我们社区的群吧。问了问题,弄懂之后要写blog分享给大家,我们才回答了。@fangod

  25. fangod
    2013年5月23日13:33 | #25

    群号 QQ群吗 如果是别的 告诉我群号和加的方法

  26. 纸鸢
    2013年5月23日13:50 | #26

    281057393@fangod

  27. 伊松
    2013年5月27日20:37 | #27

    @fangod
    能留一下你的QQ吗? 我也是做isp接入的,正在研究ats做正向代理,通过ros强制转换tcp 80的访问到ats
    你看你的进展已经非常大了,希望我们能共同学习ats

  28. 伊松
    2013年5月28日21:32 | #28

    28120417我的QQ,fangod 大哥,看到请加我

  29. beckjiang
    2013年8月22日23:49 | #29

    正向代理基本上搞定。但是遇到一个问题。现在网上很多在线视频网站都是使用FLASH的P2P工作。这导至根本无法缓存。小弟自己写了个DLL。HOOK特定浏览器。禁止使用FLASH P2P。不过在线视频的速度也就随之下降低。这是一个很杯具的事情!!一直都没有找到好的办法来处理这个问题!!如果ATS能代理RTMP。那就…………………………

  30. xinyun312
    2013年9月12日08:33 | #30

    @beckjiang
    rtmp是个流协议,不支持缓存

  31. ats-newer
    2013年10月16日15:19 | #31

    对大的很大的视频文件mp4格式的缓存要做特别的设置么?因为我遇到的是小视频确实是可能缓存的,但是一个160M左右就没有缓存进去。

  32. 纸鸢
    2013年10月17日07:28 | #32

    可能你需要配置一下合适的最大文件size,然后配置下适合的平均文件大小@ats-newer

  33. houzhuo-nanhai
    2014年3月10日18:45 | #33

    你好,为什么我装插件的时候没有知道这个日志文件cacheurl.log。试了还几次了,都是没有这个文件。另外,这句echo “cacheurl.so” >>/usr/local/etc/trafficserver/plugin.config,里面的cacheurl.so这个文件需要用到绝对路径吗,我用绝对路径试了也还是没出现日志文件。

  34. ats-gz
    2014年5月21日13:37 | #34

    如果是视频,流化这块没处理,目前有.so文件可用吗

  35. mohaja
    2014年10月27日21:42 | #35

    我读你的网站使用谷歌翻译。有趣的交代。想问一下,我们是否可以缓存的YouTube?你有正则表达式呢?

    谢谢。

    P / S:我用谷歌翻译来问这个问题。对不起,如果不准确的。

  36. 纸鸢
    2014年10月27日22:08 | #36

    @mohaja
    翻译得很好,能理解你的意思。如果你可以使用firebug或者谷歌浏览器的F12调试工具找到YTB的视频URL,然后贴在这里,我们可以帮你写成正则表达式。

  37. 纸鸢
    2014年10月27日22:10 | #37

    @mohaja
    但是cacheurl.so这个插件并不能解决所有类型的视频规则,例如有视频文件动态分片的情况等等。

  38. 纸鸢
    2014年10月27日22:12 | #38

    @mohaja
    我们这里的网络环境导致访问YTB失败,因为有一个牛逼的GFW,呵呵

  39. Cong
    2015年2月15日16:47 | #39

    @纸鸢
    同问怎么可以用ATS来实现YTB的缓存。
    您所说的youtubeURL是指怎样的URL?
    是类似这种URL吗?

    watch?v=6n-ANRWqll8

    还是具体要看哪一部分呢?
    谢谢

    • 纸鸢
      2015年3月25日19:01 | #40

      firebug抓包,看真实的flv或者mp4的地址。

  40. 匿名
    2015年5月25日15:53 | #41

    hi,请问下ATS的这个缓存功能是不是可以作为cdn流媒体的缓存加速呢?

  41. 舒克
    2015年5月25日15:54 | #42

    hi,请问ATS的这个缓存功能是不是可以用来作为cdn的流媒体加速呢?

  1. 本文目前尚无任何 trackbacks 和 pingbacks.