13 Caching (Zwischenspeicherung)
13 Caching (Zwischenspeicherung)
In HTTP werden Antwort-Anfrage-Paare zwischengespeichert. RTSP unterscheidet sich darin erheblich. Antworten sind nicht cachebar, mit Ausnahme der von DESCRIBE zurückgegebenen oder mit ANNOUNCE mitgelieferten Präsentationsbeschreibung. (Da Antworten mit Ausnahme von DESCRIBE und GET_PARAMETER keine Daten zurückgeben, ist Caching für diese Anfragen kaum relevant.) Es ist jedoch wünschenswert, die kontinuierlichen Mediendaten, die typischerweise außerband zu RTSP geliefert werden, sowie die Sitzungsbeschreibung zu cachen.
Beim Empfang einer SETUP- oder PLAY-Anfrage stellt ein Proxy fest, ob er eine aktuelle Kopie des kontinuierlichen Medieninhalts und seiner Beschreibung hat. Er kann die Aktualität prüfen, indem er jeweils SETUP oder DESCRIBE sendet und den Last-Modified-Header mit dem der zwischengespeicherten Kopie vergleicht. Ist die Kopie nicht aktuell, passt er die Transportparameter von SETUP an und leitet die Anfrage an den Ursprungsserver weiter. Nachfolgende Steuerbefehle wie PLAY oder PAUSE passieren den Proxy unverändert. Der Proxy liefert die kontinuierlichen Mediendaten an den Client und kann dabei eine lokale Kopie für spätere Wiederverwendung anfertigen. Das genau erlaubte Verhalten des Caches ergibt sich aus den Cache-Antwort-Direktiven in Abschnitt 12.8. Ein Cache MUSS auf jede DESCRIBE-Anfrage antworten, wenn er den Stream derzeit an den Anforderer ausliefert, da sich Details der Streambeschreibung auf dem Ursprungsserver geändert haben können.
Ein RTSP-Proxy-Cache ist im Gegensatz zum HTTP-Cache von der Art „cut-through“. Statt die gesamte Ressource vom Ursprungsserver zu holen, kopiert der Cache die Streaming-Daten nur beim Durchleiten zum Client. Dadurch entsteht keine zusätzliche Latenz.
Für den Client wirkt ein RTSP-Proxy-Cache wie ein normaler Medienserver, für den Medien-Ursprungsserver wie ein Client. Wie ein HTTP-Cache Inhaltstyp, Sprache usw. für gecachte Objekte speichern muss, muss ein Medien-Cache die Präsentationsbeschreibung speichern. Typischerweise entfernt ein Cache alle Transportreferenzen (Multicast-Informationen) aus der Präsentationsbeschreibung, da diese unabhängig von der Datenlieferung vom Cache zum Client sind. Informationen zu Kodierungen bleiben gleich. Kann der Cache die gecachten Mediendaten transkodieren, erstellt er eine neue Präsentationsbeschreibung mit allen Kodierungsmöglichkeiten, die er anbieten kann.