注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

itoedr的it学苑

记录从IT文盲学到专家的历程

 
 
 

日志

 
 

使用Apache Traffic Server缓存视频文件  

2013-05-25 16:18:07|  分类: trafficserver编 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

研究所有的视频网站,你会发现其实他们还是有很多共同点的:

1.多数使用IP地址的URL,不使用域名

2.多数都含有key=xxx的一些授权信息,正式这些信息决定了每个用户真正访问到的视频文件URL是完全不同的,这些信息决定了这个URL的有效期等 等。

3.对同一个视频内容,可以找到它的真正id 如果我们对这些url进行转换,是否就可以解决了呢?是的,完全可以!Apache Traffic Server有很方便扩展的API接口,我们已经有插件可以解决这个问题。


安装配置cacheurl插件

TS则只要用TS的插件cacheurl,就可以很方便的解决啦。这个非常小但功能强大的插件,目前已经存放在官方的ATS代码里:
https://git-wip-us.apache.org/re ... al/cacheurl;hb=HEAD
大家可以直接从这个网站snapshot下来,或者用官方的git repoclone
https://git-wip-us.apache.org/repos/asf/trafficserver.git


编译安装:

要使用这个插件,我们需要首先安装配置好Apache Traffic Server 3.x的版本,建议使用最新版本,如3.0.4, 3.1.3或更新版本。插件的编译安装非常简单,编译安装功能也被封装进Makefile了:

zym@zym6400 ~/git/trafficserver-plugins/cacheurl $ ls
cacheurl.ccacheurl.config.exampleCHANGESLICENSEMakefileNOTICEREADME
zym@zym6400 ~/git/trafficserver-plugins/cacheurl $ make
tsxs -c cacheurl.c -o cacheurl.so
compiling cacheurl.c -> cacheurl.lo
linking -> cacheurl.so
zym@zym6400 ~/git/trafficserver-plugins/cacheurl $

安装只要make install就可以了(取决于你的系统,你可能需要以root的权限执行):
zym@zym6400 ~/git/trafficserver-plugins/cacheurl $ make install
tsxs -i -o cacheurl.so
installing cacheurl.so -> /opt/ats/libexec/trafficserver/cacheurl.so
zym@zym6400 ~/git/trafficserver-plugins/cacheurl $


配置启用

编译安装就完成了,下面我们配置并启用cacheurl
修改etc/trafficserver下的plugin.config,添加: cacheurl.so
复制源代码下的cacheurl.config.example到上面cacheurl.so安装到的目录里,如上面是/opt/ats/libexec/trafficserver/。并修改相关配置,后面有具体例子。
重启server进程。

配置cacheurl.config很简单,只要你知道你想缓存的目标url的一些正则规则就好,下面是几个常见视频网站的配置:

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://[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}/videos2/[^/]*/[^/]*/([^/]*.f4v)?key=.*http://www.iqiyi.com/$1


另,youku的规则改为:


http://[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}/youku/.*/(.*-.*-.*-.*-[^?]*)(.*) http://www.youku.com/$1
可以解决在用户拖拉的时候产生很多 url?start=88 之类的请求不命中的情况,增加命中率。

FAQ


Q
:如何分析提炼这些规则?

A:使用像firebug等工具是很好的选择。

Q
:如何验证是否缓存住了呢?

A1
:使用Apache Traffic Serverhttp_ui工具:参考 https://cwiki.apache.org/TS/faq.html
cacheurl.log
日志格式,后一字段为变化后的URL地址:

20120415.17h20m57s Rewriting cache URL for http://61.153.87.199/f4v/30/1262 ... XXXXXX&plybgn=1 to http://www.tudou.com/89768396
20120415.17h20m58s Rewriting cache URL for http://118.228.16.40/youku/XXXXX ... 87-33427E380B07.flv to http://www.youku.com/03000204014 ... 87-33427E380B07.flv

  评论这张
 
阅读(367)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017