缓存说明
目前版本,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),则从缓存读取数据。