Sommario

Introduzione

Prerequisiti

Requisiti

Componenti usati

Premesse

Considerazioni sulla memorizzazione nella cache dei prompt dei gateway

Come determinare se il gateway sta inserendo correttamente nella cache

Calcola FreshTime

Rimuovi voci obsolete nella cache

MaxStale

Comando Audio-Prompt Load

Data e ora

Introduzione

In questo documento viene descritta la cache HTTP (Voice Extensible Markup Language) / CVP (Customer Voice Portal) per i file multimediali.

Prerequisiti

Requisiti

Cisco raccomanda la conoscenza dei seguenti argomenti:

- VXML Gateway

- CVP

Componenti usati

Il documento può essere consultato per tutte le versioni software o hardware.

Le informazioni discusse in questo documento fanno riferimento a dispositivi usati in uno specifico ambiente di emulazione. Su tutti i dispositivi menzionati nel documento la configurazione è stata ripristinata ai valori predefiniti. Se la rete è operativa, valutare attentamente eventuali conseguenze derivanti dall'uso dei comandi.

Premesse

Nella cache del client HTTP sono disponibili due tipi di cache per l'archiviazione dei file multimediali:

1. La cache di IVR Media Player e

2. Cache del client HTTP

L'impostazione della cache del server sovrascrive le impostazioni del client HTTP. Questi parametri vengono inviati dal server tramite intestazioni di messaggi HTTP o tramite script di applicazioni vxml.

Considerazioni sulla memorizzazione nella cache dei prompt dei gateway

Passaggio 1. Quando i prompt audio vengono memorizzati su un server multimediale HTTP, sono necessari metodi di memorizzazione nella cache dei prompt del gateway appropriati per ottimizzare le prestazioni del gateway e l'utilizzo della larghezza di banda della rete. Se la memorizzazione nella cache è completamente disabilitata, le prestazioni del gateway diminuiscono di circa il 35-40%.

Per configurare la memorizzazione nella cache sul gateway, impostare le opzioni seguenti sul gateway:

..ivr prompt memory 15000

..http client cache memory file 500

..http client cache memory pool 15000

Nota: Il file della memoria cache del client http rappresenta il file di prompt di dimensioni maggiori (in KB) che è possibile memorizzare nella cache. In generale, le richieste del cliente di dimensioni superiori a 500 K (circa un minuto) devono essere suddivise in parti più piccole e più gestibili per facilitare il caricamento e la memorizzazione nella cache. Ad esempio, la musica in coda potrebbe essere un ciclo ripetitivo di un prompt di 30 secondi. Si noti inoltre che, poiché i prompt vengono trasmessi in streaming, il prompt non viene memorizzato nella cache a meno che non venga riprodotto l'intero prompt. Pertanto, è consigliabile che i prompt abbiano dimensioni gestibili.

Passaggio 2. Sincronizzare la data/ora tra il gateway e il server multimediale HTTP.

Nota: Non è necessario che la sincronizzazione sia esatta, ma almeno entro un minuto o due. Gli orari non sincronizzati possono impedire l'aggiornamento delle richieste oppure vengono aggiornati a ogni chiamata, in entrambi i casi con comportamenti indesiderati.

Passaggio 3. Sul server multimediale, impostare la scadenza del contenuto (ad esempio, 15 minuti).

Nota: In IIS, questa operazione viene eseguita nella scheda Intestazione HTTP. Il prompt del gateway viene aggiornato dopo questo periodo di tempo. Il periodo scelto deve indicare la frequenza con cui ripetere la registrazione dei prompt e il tempo di attesa prima del caricamento del nuovo prompt dopo la modifica.

Passaggio 4. Passare a Programmi > Strumenti di amministrazione > Gestione IIS.

Passaggio 5. Passare al file .wav che si desidera modificare.

Passaggio 6. Quindi, fare clic con il pulsante destro del mouse su > Proprietà > Intestazioni HTTP

Passaggio 7. Abilitare La Scadenza Del Contenuto.

Come determinare se il gateway sta inserendo correttamente nella cache

Per determinare se la memorizzazione nella cache del gateway è stata configurata correttamente, attenersi alla seguente procedura:

Il registro IIS sul server multimediale registra ogni volta che un client richiede un messaggio. Se la memorizzazione nella cache è configurata correttamente, queste richieste vengono visualizzate approssimativamente ogni X minuti (X corrisponde all'intervallo di aggiornamento definito nel passaggio 3) per ogni particolare prompt. Il registro si trova in: C:\WINNT\system32\LogFiles\W3SVC1\ex*

O,

Eseguire il comando show http client cache sul gateway. La colonna Fresh Time (Ora di aggiornamento) deve essere uguale al periodo di aggiornamento impostato sul server multimediale HTTP.

Ad esempio, se il periodo di aggiornamento è stato impostato su 15 minuti, deve essere 900 secondi. Nella colonna Età viene visualizzato il numero di secondi trascorsi dall'ultimo aggiornamento del prompt. In generale, questo numero è minore del tempo nuovo. Tuttavia, se nessuna chiamata ha mai avuto accesso di recente al prompt, questo numero può essere maggiore dell'ora di aggiornamento. I prompt vengono aggiornati solo quando vengono attivati da una chiamata e la richiesta Fresh Time è scaduta. Se il valore di Fresh Time è molto alto, l'unico modo per rimuovere il prompt dalla cache (ad eccezione dei comandi nascosti) è ricaricare il gateway.

È molto più semplice aggiungere l'intestazione come intestazione HTTP reale tramite IIS.

Questa operazione può essere eseguita tramite IIS 6 o 7.

http://weblogs.asp.net/joelvarty/archive/2009/03/23/force-ie7-compatibility-mode-in-ie8-with-iis-settings.aspx

Calcola FreshTime

Esistono diverse variabili che possono influire su FreshTime di un file, ad esempio: intestazioni dei messaggi http dal server e valore di aggiornamento della cache configurato tramite CLI, ecc.

Come è possibile sapere quale valore viene utilizzato da un file per FreshTime? L'oggetto FreshTime di un file viene determinato in base alla precedenza seguente:

1. Quando un file viene scaricato dal server http, se una delle intestazioni dei messaggi http contiene:

Cache-Control: max-age = <value in seconds>

Il valore <in secondi> verrà quindi utilizzato come FreshTime per il file.

2. Se (1) non è presente, ma queste due intestazioni sono incluse nel messaggio http:

Expires: <expiration date time>

Date: <Current date time>

Quindi, la differenza <data/ora scadenza> - <data/ora corrente> viene utilizzata come FreshTime per questo file.

3. La specifica HTTP/1.1, RFC 2616 (HTTP), consiglia di utilizzare una delle intestazioni dei messaggi http descritte nei punti (1) o (2).  Se il server non riesce a inviare sia (1) che (2) nella risposta http, è possibile ricavare il 10% della differenza tra Data e Ultima modifica dalle intestazioni dei messaggi:

Last-Modified: <last-modified date time>

Date: <Current date time>

L'oggetto FreshTime per questo file viene calcolato nel modo seguente:

FreshTime = 10% x ((Last-Modified) - (Date))

4. Infine, a questo punto entra in gioco la CLI di configurazione dell'aggiornamento della cache. La CLI consente all'utente di assegnare ai file un valore euristico di FreshTime come valore provvisorio nel caso in cui non sia presente alcuna delle intestazioni dei messaggi (1)-(3) di cui sopra.

c5400-02(config)#http client cache refresh ?

<1-864000>           Time value in seconds

Il valore di aggiornamento predefinito è 86400 secondi (24 ore).

Nota: L'aggiornamento della cache del client HTTP configurato non ha alcun effetto sui file quando sono presenti intestazioni di messaggi (1) - (3).

Nota: Questa CLI, se presente, non è retroattiva. In altre parole, il valore di aggiornamento appena configurato si applica solo ai nuovi file in arrivo. Non ha alcun effetto sulle voci già presenti nella cache.

Rimuovi voci obsolete nella cache

Nota: Il router non aggiorna mai i file obsoleti da solo automaticamente.

I file obsoleti vengono aggiornati solo se necessario. Perché il router impiegherebbe i propri preziosi cicli della CPU aggiornando i file nella cache senza sapere se o quando tali file verranno utilizzati, mentre la CPU è necessaria per altri servizi urgenti?

Ciò significa che una voce memorizzata nella cache non aggiornata può rimanere nella cache per molto tempo finché non viene rimossa per fare spazio a una copia aggiornata dello stesso file o a un altro file che richiede solo lo spazio di memoria nella cache. A volte una voce memorizzata nella cache non aggiornata può essere ancora utilizzabile, se la sua durata non ha superato il valore MaxStale specificato dall'applicazione.

In breve, se una voce memorizzata nella cache è obsoleta o ancora utilizzabile, è possibile calcolarla con questi semplici confronti:

-        file is fresh                                    if FreshTime > Age

-        file is stale but still usable         if (FreshTime + MaxStale) > Age

-        file is stale and not usable         if (FreshTime + MaxStale) <= Age

MaxStale

Indica che il client è disposto ad accettare una risposta che ha superato il tempo di scadenza. Se a max-stale viene assegnato un valore, il client è disposto ad accettare una risposta che ha superato il tempo di scadenza di non oltre il numero di secondi specificato. Se non viene assegnato alcun valore a max-stale, il client è disposto ad accettare una risposta non aggiornata di qualsiasi età.

http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html

Come accennato in precedenza, una voce memorizzata nella cache non aggiornata viene rimossa dal relativo proprietario in base alle necessità, quando:

La voce memorizzata nella cache diventa obsoleta; e

Il suo conteggio dei riferimenti è zero (0), cioè nessuno usa questa voce memorizzata nella cache; e

Il relativo spazio di memoria è necessario per fare spazio ad altre voci

Ciò significa che il client http e IVR Media Player devono gestire e controllare le voci memorizzate nella cache in questo modo, rispettivamente, nelle modalità non streaming e streaming. Cosa succede se il client http deve pulire alcune voci obsolete per recuperare spazio nel pool di memoria cache ma non è il proprietario di quei file?  Questa operazione diventa responsabilità dell'Agente background cache client http.

L'utilità di gestione in background della cache del client http viene riattivata ogni 5 minuti. Se la memoria totale utilizzata per le voci memorizzate nella cache supera la soglia del 70% delle dimensioni del pool di memoria cache configurate, il server di gestione esaminerà ogni voce memorizzata nella cache. Se la voce è ancora fresca, non verrà modificata. Se la voce non è aggiornata e non contiene riferimenti, ad esempio conteggio riferimenti = 0, il client http eliminerà la voce in quanto proprietario legittimo della voce. Se alla voce non aggiornata è associato un numero di riferimento 1 e non è collegato alcun elemento padre o figlio, ovvero il file non è in fase di aggiornamento, il client http richiamerà per notificare a Media Player di rilasciare la voce non aggiornata.

Comando Audio-Prompt Load

A volte può essere opportuno o necessario scaricare manualmente un file audio sul router. A questo punto viene già indicato che il router non passa automaticamente al server http per aggiornare le voci memorizzate nella cache non aggiornate. Queste voci vengono aggiornate solo quando sono necessarie.  Un download manuale può risolvere questo problema.

Un altro scenario che può essere utile è quello di precaricare un prompt audio di grandi dimensioni in modalità non streaming. Questa operazione può essere eseguita prima della ricezione della prima chiamata in modo che il chiamante non subisca alcun ritardo nel caricamento della richiesta.

Per scaricare manualmente un particolare file audio, eseguire questi comandi CLI:

audio-prompt load <url>

L' <url> indica la posizione del file audio sul server. Naturalmente, è previsto che la cache del client http sia configurata correttamente per salvare questo file nella cache.

Nota: Se l'URL <url> è un prompt attivo, ad esempio attualmente in riproduzione, questa CLI non ha effetto.

Data e ora

Verificare inoltre che il valore datetime tra il gateway e il server multimediale HTTP sia sincronizzato. Questo è un must.

Avviso: Non utilizzare clear http client cache in VXML GW. Se questo comando viene richiamato su VXML GW molto caricato/attivo, è noto che causa problemi, danneggiamento della memoria e arresti anomali. In sostanza, l'uso di clear ip http client cache all non è consigliato. L'operazione consiste nell'aggiornare tutte le voci della cache e nel creare ed eliminare nodi dall'elenco collegato della cache, con conseguenti problemi. Rimozione del comando da Cisco IOS® in corso. Il comando consigliato è set http client cache stale, ma si limita ad aggiornare la parte della cache appena modificata.