13 Caching (Mise en cache)
13 Caching (Mise en cache)
En HTTP, les paires réponse-requête sont mises en cache. RTSP diffère nettement à cet égard. Les réponses ne sont pas cacheables, sauf la description de présentation renvoyée par DESCRIBE ou incluse avec ANNOUNCE. (Comme les réponses autres que DESCRIBE et GET_PARAMETER ne renvoient pas de données, la mise en cache n'est guère un sujet pour ces requêtes.) Il est toutefois souhaitable de mettre en cache les données média continues, généralement livrées hors bande par rapport à RTSP, ainsi que la description de session.
Lors de la réception d'une requête SETUP ou PLAY, un proxy vérifie s'il dispose d'une copie à jour du contenu média continu et de sa description. Il peut déterminer si la copie est à jour en émettant respectivement SETUP ou DESCRIBE et en comparant l'en-tête Last-Modified à celui de la copie en cache. Si la copie n'est pas à jour, il modifie les paramètres de transport de SETUP comme il convient et transmet la requête au serveur d'origine. Les commandes de contrôle ultérieures telles que PLAY ou PAUSE traversent ensuite le proxy sans modification. Le proxy livre les données média continues au client tout en pouvant faire une copie locale pour réutilisation ultérieure. Le comportement exact autorisé pour le cache est défini par les directives de réponse de cache décrites à la section 12.8. Un cache DOIT répondre à toute requête DESCRIBE s'il sert actuellement le flux au demandeur, car des détails de bas niveau de la description du flux ont pu changer sur le serveur d'origine.
Notez qu'un cache proxy RTSP, contrairement au cache HTTP, est de type « cut-through ». Plutôt que de récupérer l'intégralité de la ressource depuis le serveur d'origine, le cache copie simplement les données de flux au passage vers le client. Il n'introduit donc pas de latence supplémentaire.
Pour le client, un cache proxy RTSP ressemble à un serveur média ordinaire ; pour le serveur d'origine média, à un client. Comme un cache HTTP doit stocker le type de contenu, la langue du contenu, etc. pour les objets mis en cache, un cache média doit stocker la description de présentation. En général, un cache supprime toutes les références de transport (informations de multidiffusion) de la description de présentation, car elles sont indépendantes de la livraison des données du cache au client. Les informations sur les encodages restent les mêmes. Si le cache peut transcodifier les données média mises en cache, il créerait une nouvelle description de présentation avec toutes les possibilités d'encodage qu'il peut offrir.