电信/联通/移动等ISP的内网缓存服务器 导致视频CDN播放异...
电信/联通/移动等ISP的内网缓存服务器 导致视频CDN播放异常 【附解决方案】我拿某大站 解释下问题在哪里
先问题复现下
第一步 观看视频
第二步 载入视频文件链接
http://hls-hw.xvideos-cdn.com/videos/hls/e0/de/33/e0de339142dc35521c2a36ee5c0f1b6a/hls-250p.m3u8
http://hls-hw.xvideos-cdn.com/videos/hls/e0/de/33/e0de339142dc35521c2a36ee5c0f1b6a/hls-250p1.ts
。。。。。。
请求时这个样子的
error.jpg
这个是正常情况 视频是可以正常播放的
但是 我们进行一些行为操作, 比如快进一下 问题来了
这个请求的是
http://hls-hw.xvideos-cdn.com/videos/hls/e0/de/33/e0de339142dc35521c2a36ee5c0f1b6a/hls-250p31.ts
这个请求是错误的,被运营商挟持到缓存服务器了
error.jpg
链接变为
http://59.80.44.82/hls-hw.xvideos-cdn.com/videos/hls/e0/de/33/e0de339142dc35521c2a36ee5c0f1b6a/hls-250p31.ts
error.jpg
并且一直访问错误
前面被增加了
http://59.80.44.82
这个IP 就是运营商的缓存服务器
这个时候 视频就无法播放了
会这样
error.jpg
产生的影响
# HLS协议
m3u8正常
ts因为密集型小文件,会出现上面那个断流问题,视频播放错误
# MP4文件
一般MP4文件比较大 你想想, 一个1G的视频文件放美国服务器上
电信用户访问,电信ISP缓存服务器要下载美国服务器的MP4
如果缓存服务器配置不当,没启用range byte 类似BT的边下边播,那么要等电信缓存服务器下载完1G大小的视频用户才能观看
嗯 估计几个小时吧。。。。。。。
点播卡成狗是一种什么体验?
已知的 电信/联通/移动/长城宽带/有线通等 全部存在缓存服务器
这个缓存是为了提高网内访问速度,降低带宽使用和网间结算费用
单用户请求一个文件,缓存服务器先缓存起来,然后当其他用户访问,就不需要重复访问外网去下载了
这个类似于一个重复的CDN缓存,当遇到运营商强制缓存,就等于你自己的CDN毫无用处了
原来
用户访问 =》 CDN边缘服务器 =》 源文件服务器
现在
用户访问 =》 运营商ISP缓存服务器 =》CDN边缘服务器 =》 源文件服务器
多了一层,我们不可控的资源, 主要表现在限连接数和限速的关系
因为运营商的缓存服务器本身并不是特别快,高并发的情况下会挂,并且有做资源限速
相当于多了一层
类似于一条高速,我们起点到终点 部分车辆 可以跑120公里
而运营商非要在高速间挖个洞,说能更快。。。。
但是这个快,是ISP宽带客户到ISP之前的快,而不是ISP宽带客户到网站服务器的快
并且产生了一个非常不好的影响,ISP运营商的缓存服务器慢,普通用户只是会觉得你网站服务器慢
这个问题目前只有部署SSL可以暂时解决
(我说暂时的,因为实际有部分区域已经开始使用伪SNI来缓存SSL了,目前会提示SSL证书不安全)
但是多媒体启用SSL协议,会严重加大服务器负载和握手耗时,增加开销
所以 CDN项目要黄,简直不能忍
最后
附带一些 缓存服务器大家测试
【注意:缓存服务器有区域和ISP限制,可能无法访问,例如电信的只能电信访问,联通的只能联通访问】
[*]真实的
[*]http://tb1.bdstatic.com/tb/cms/ngmis/images/file_1550729489332.jpg
[*]
[*]电信的
[*]http://101.96.10.63/tb1.bdstatic.com/tb/cms/ngmis/images/file_1550729489332.jpg
[*]
[*]联通的
[*]http://120.52.51.64/tb1.bdstatic.com/tb/cms/ngmis/images/file_1550729489332.jpg
[*]http://59.80.44.89/tb1.bdstatic.com/tb/cms/ngmis/images/file_1550729489332.jpg复制代码
加IP的就是运营商的缓存服务器,访问的内容和真实内容都是一致的 前排,运营商的Cache真的恶心 你还漏了一个移动端手机浏览器缓存,那个更恶心,几天不更新都正常
用户端
围观者 发表于 2019-2-21 23:13
既然如此,那就好好利用运营商的缓存服务器,能省不少钱呢
移动表示几个链接中经过电信联通缓存的非常非常慢
目前访问真实链接没跳转缓存,但是之前被缓存过一个apk,速度也没多块,不如https直链下载
ghyghoo8 发表于 2019-2-21 23:32
移动表示几个链接中经过电信联通缓存的非常非常慢
目前访问真实链接没跳转缓存,但是之前被缓存过一个apk ...
有些节点质量非常不错,而且支持三网访问,自己多找找
直接在网站源文件里写成
http://120.52.51.64/www.hostloc.com/uc_server/avatar.php?uid=4299&size=middle
围观者 发表于 2019-2-21 23:37
有些节点质量非常不错,而且支持三网访问,自己多找找
直接在网站源文件里写成
HTTP/1.0 301 Moved Permanently
Location: https://www.hostloc.com/uc_server/avatar.php?uid=4299&size=middle
围观者 发表于 2019-2-21 23:37
有些节点质量非常不错,而且支持三网访问,自己多找找
直接在网站源文件里写成
实际无用,因为ISP的缓存服务器是不对内容做检查的
所以有人用缓存服务器IP投毒,导致IP经常性被各种浏览器,QQ,360报毒和拦截
如果用在网站上 会连带 我记得之前有人通过这个缓存做大人站,效果非常好
蓝洛水深 发表于 2019-2-22 00:52
我记得之前有人通过这个缓存做大人站,效果非常好
秀
1. 缓存有限制
2. 不是全国所有ISP都联通的
3. IP被黑名单
实用性不大 前景项目不能黄 本帖最后由 dabiantai 于 2019-2-24 10:01 编辑
在你的edge那里做一些策略让每次请求都不一样就行了。
http://59.80.44.82/hls-hw.xvideos-cdn.com/videos/hls/e0/de/33/e0de339142dc35521c2a36ee5c0f1b6a/
1550972793
/hls-250p31.ts
在m3u8里动态添加随机字符串,在edge那里缓存的时候忽略添加的字符串。这样你的请求就不会命中运营商缓存,但是可以命中你的cdn缓存
dabiantai 发表于 2019-2-24 09:58
在你的edge那里做一些策略让每次请求都不一样就行了。
http://59.80.44.82/hls-hw.xvideos-cdn.com/videos/ ...
重点不是这个
因为运营商缓存服务器是不遵守如何协议
这种操作无意义,反而会增加CDN节点的负载
比如加时间字段
会产生2个问题
1. 运营商缓存不更新 导致播放链接失效
2. 体量问题,并发太高 (瞬间(豪秒级)都在请求热点内容)
如果是伪静态模式 ISP强制缓存
如果是字符串模式 ISP强制忽略
暂时没好的解决方案
试过很多方式, 联通的缓存是强制忽略任何header配置的expire time的
所以如果文件名称不变
像淘宝旺旺分发都会出现用户下载新版软件,结果下载的文件还是ISP缓存的旧版本
页:
[1]
2