Skip to content

cachePolicy

Su, Jia edited this page Oct 19, 2016 · 1 revision

目前版本,httpcache的缓存是顺序的、连续的,配合播放器使用时缓存的原则是:

  • 如果播放过程中没有seek请求,则httpcache缓存的是从播放开始(第0秒)到退出播放时的数据。
  • 如果播放过程中发生seek,
    • 如果seek的起始点(http header中range的起始点)命中cache,则httpcache从cache中读取数据。播放过程中,遇到未缓存完成的部分,则httpcache从网络读取数据并保存到缓存中。(此时,如果前一次请求的socket为关闭,则httpcache会在后台继续下载并缓存数据)
    • 如果seek起始点未命中cache,则从网络读取数据,但这部分数据不会被保存到缓存中。

下面用两个实例来说明:

  • 如果从0到100秒播放的过程中,没有发生过seek,则这100秒数据都缓存下来了。
    这种情况下,seek到30秒(命中cache),httpcache会从cache中取30到100秒的数据。
    播放到100秒后,且文件大于100秒,则httpcache从网络读取数据并保存到cache中,并返回给播放器。
  • 如果从0到100s的播放过程中,0s-20s正常播放,seek到60秒(未命中cache)并连续播放到100秒。
    这种情况下,60-100秒的数据未保存,缓存中至少保留了0-20秒的数据。
    (如果前一次请求的socket未关闭,则httpcache会在后台下载20秒后的数据并保存到cache中)
    这时如果seek到30秒播放(未命中cache),则从网络读取数据。如果seek到18秒(命中cache),则从缓存读取数据。``
Clone this wiki locally