m3u8的配置以及hls.js的配置对P2P效果会产生很大的影响,适当的配置(包括每个ts切片的时长和每个m3u8包含的切片数量等)可以显著提高P2P率。建议不要使用多码率m3u8。
- ts切片时长:不超过5秒
- 每个m3u8切片数量:不少于10个
Http Range请求用于下载指定范围的数据,可以在一部分数据已用P2P下载的情况下,剩余部分用http下载补足。如果从对等端P2P下载速度较慢,那么在达到超时时间后,就可以把剩余数据交给http range请求下载,而不需要重新完整下载整个数据,从而节省CDN的带宽,下图阐述了不采用和采用Http Range的区别:
要启动Http Range请求,需要同时在源服务器和CDN开启OPTIONS和RANGE请求:
OPTIONS请求是浏览器在跨域情况下发起Range请求之前的预检请求,一般只需要配置服务器使Http头有以下响应:
Access-Control-Allow-Methods: GET, OPTIONS
要开启RANGE请求,一般只需要配置服务器使Http头有以下响应:
Access-Control-Allow-Headers: Range