RTSP协议(15)——缓存
原文第十三章
在HTTP中,响应请求对被缓存。RTSP在这方面有很大的不同。响应不可缓存,由descripe返回或包含在ANNOUNCE中的演示文稿描述除外(由于除了descripe和GET_PARAMETER之外的任何响应都不会返回任何数据,因此缓存对于这些请求来说并不是真正的问题。)但是,需要缓存连续媒体数据(通常相对于RTSP在带外传递)以及会话描述。
在接收到设置或播放请求时,代理确定其是否具有连续媒体内容及其描述的最新副本。它可以通过分别发出SETUP或descripe请求并将上次修改的头与缓存副本的头进行比较来确定副本是否是最新的。如果副本不是最新的,它会根据需要修改设置传输参数,并将请求转发到源服务器。随后的控制命令(如PLAY或PAUSE)将不加修改地传递给代理。代理将连续媒体数据传递给客户机,同时可能制作一个本地副本供以后重用。第12.8节中描述的缓存响应指令给出了允许缓存的确切行为。如果缓存当前正在向请求者提供流,那么它必须回答任何描述请求,因为源服务器上流描述的低级细节可能已经更改。
注意,与HTTP缓存不同的是,RTSP缓存具有“切入”的特性。缓存不从源服务器检索整个资源,而是在流数据传递到客户端时复制它们。因此,它不会引入额外的延迟。
对于客户端,RTSP代理缓存在媒体源服务器中看起来像一个常规媒体服务器,对媒体源服务器来说,就像客户端。正如HTTP缓存必须存储其缓存对象的内容类型、内容语言等,媒体缓存必须存储表示描述。通常,缓存从表示描述中消除所有传输引用(即多播信息),因为这些引用独立于从缓存到客户端的数据传递。编码信息保持不变。如果缓存能够转换缓存的媒体数据,它将创建一个新的表示描述,并提供所有的编码可能性。