Contenido

Introducción

Prerequisites

Requirements

Componentes Utilizados

Antecedentes

Consideraciones sobre cómo almacenar en caché el mensaje del gateway

Cómo determinar si la puerta de enlace se almacena correctamente

Calcular tiempo nuevo

Eliminar entradas almacenadas en caché

MaxStale

Comando Audio-Prompt Load

Fecha y hora

Introducción

Este documento describe la memoria caché de Voice Extensible Markup Language (VXML) / Customer Voice Portal (CVP) Hypertext Transfer Protocol (HTTP) para archivos de medios.

Prerequisites

Requirements

Cisco recomienda que tenga conocimiento sobre estos temas:

- Gateway VXML

- CVP

Componentes Utilizados

Este documento no tiene restricciones específicas en cuanto a versiones de software y de hardware.

The information in this document was created from the devices in a specific lab environment. All of the devices used in this document started with a cleared (default) configuration. If your network is live, make sure that you understand the potential impact of any command.

Antecedentes

En HTTP Client Cache, hay dos tipos de caché involucrados en el almacenamiento de archivos de medios:

1. La memoria caché del Reproductor multimedia IVR y

2. Caché de cliente HTTP

La configuración de caché del servidor sobrescribe la configuración del cliente HTTP. Estos parámetros se envían desde el servidor a través de encabezados de mensaje http o a través de scripts de aplicación vxml.

Consideraciones sobre cómo almacenar en caché el mensaje del gateway

Paso 1. Cuando las indicaciones de audio se almacenan en un servidor de medios HTTP, se necesitan métodos adecuados de almacenamiento en caché de avisos de gateway para optimizar el rendimiento del gateway y el consumo de ancho de banda de la red. El rendimiento de la puerta de enlace disminuye aproximadamente entre un 35% y un 40% si el almacenamiento en caché está completamente desactivado.

Para configurar el almacenamiento en caché en el gateway, configure estos en el gateway:

..ivr prompt memory 15000

..http client cache memory file 500

..http client cache memory pool 15000

Nota: El archivo de memoria caché del cliente http representa el archivo de solicitud de tamaño mayor (en Kbytes) que se puede almacenar en caché. En general, las indicaciones de los clientes mayores de 500 000 (aproximadamente un minuto) deben dividirse en partes más pequeñas y más manejables para facilitar la carga y el almacenamiento en caché. Por ejemplo, la música en cola puede ser un loop repetitivo de un mensaje de 30 segundos. Tenga en cuenta también que, dado que los mensajes se transmiten, el mensaje no se almacena en caché a menos que se reproduzca el mensaje completo. Por lo tanto, se recomienda realizar solicitudes de un tamaño manejable.

Paso 2. Sincronice la fecha y hora entre la puerta de enlace y el servidor de medios HTTP.

Nota: La sincronización no tiene que ser exacta, pero al menos en un minuto o dos. Los tiempos que no están sincronizados pueden hacer que los avisos nunca se actualicen o que se actualicen con cada llamada, que son comportamientos indeseables.

Paso 3. En el servidor de medios, establezca el vencimiento del contenido (por ejemplo, 15 minutos).

Nota: En IIS, esto se realiza en la ficha Encabezado HTTP. El mensaje del gateway se actualiza después de este período de tiempo. El período elegido debe reflejar la frecuencia con la que se graban las indicaciones y el tiempo que está dispuesto a esperar para que se cargue la nueva indicación después de la modificación.

Paso 4. Vaya a Programas > Herramientas administrativas > Administrador IIS.

Paso 5. Navegue hasta el archivo .wav que desea modificar.

Paso 6. A continuación, haga clic con el botón derecho del ratón > Propiedades > Encabezados HTTP

Paso 7. Habilitar vencimiento de contenido.

Cómo determinar si la puerta de enlace se almacena correctamente

Para determinar si ha configurado correctamente el almacenamiento en caché de gateway, siga este procedimiento:

El registro IIS en el servidor de medios se registra cada vez que un cliente solicita una solicitud. Si el almacenamiento en caché se configura correctamente, estas solicitudes aparecen aproximadamente cada X minutos (X es lo que se definió como el intervalo de actualización en el paso 3.) para cualquier solicitud en particular. El registro se encuentra en: C:\WINNT\system32\LogFiles\W3SVC1\ex*

O bien,

Ejecute show http client cache en el gateway. La columna Hora nueva debe ser igual al período de tiempo de actualización establecido en el servidor de medios HTTP.

Por ejemplo, si el período de actualización se estableció en 15 minutos, debe decir 900 segundos. La columna Edad muestra cuántos segundos han transcurrido desde la última actualización del mensaje. En general, este número es menor que el Tiempo fresco. Sin embargo, si ninguna llamada ha accedido a la indicación recientemente, este número puede ser mayor que el tiempo fresco. Los mensajes sólo se actualizan cuando se activan por una llamada y el mensaje Tiempo fresco ha caducado. Si el Tiempo fresco es un valor muy alto, la única manera de quitar el mensaje de la memoria caché (excepto los comandos ocultos) es volver a cargar el gateway.

Es mucho más fácil agregar el encabezado como encabezado HTTP real a través de IIS.

Esto se puede hacer a través de IIS 6 o 7.

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

Calcular tiempo nuevo

Hay varias variables que pueden afectar a FreshTime de un archivo, como: Encabezados de mensajes http desde el servidor y valor de actualización de caché configurado a través de la CLI, etc.

¿Cómo sabe qué valor utiliza un archivo para su FreshTime? El valor FreshTime de un archivo se determina en la siguiente precedencia:

1. Cuando se descarga un archivo del servidor http, si uno de los encabezados de mensaje http contiene lo siguiente:

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

A continuación, se utiliza <value in seconds> como FreshTime para este archivo.

2. Si (1) no está presente, pero estos dos encabezados están incluidos en el mensaje http:

Expires: <expiration date time>

Date: <Current date time>

A continuación, la diferencia <fecha y hora de vencimiento> - <fecha y hora actual> se utiliza como FreshTime para este archivo.

3. La especificación HTTP/1.1, RFC 2616 (HTTP), recomienda que estén presentes cualquiera de los encabezados de mensajes http descritos en (1) o (2).  Si el servidor no puede enviar ambos (1) o (2) en su respuesta http, puede tomar el 10% de la diferencia entre Fecha y Última Modificación desde los encabezados de mensaje:

Last-Modified: <last-modified date time>

Date: <Current date time>

Por lo tanto, el valor de FreshTime para este archivo se calcula como:

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

4. Finalmente, es cuando entra en juego la CLI de configuración de actualización de caché. La CLI permite al usuario asignar un valor heurístico FreshTime a los archivos como valor provisional en caso de que ninguno de los encabezados de mensaje anteriores (1)-(3) esté presente.

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

<1-864000>           Time value in seconds

El valor de actualización predeterminado es 86400 segundos (24 horas).

Nota: La actualización de la caché del cliente http configurada no tiene ningún efecto en los archivos cuando están presentes alguno de los encabezados de mensaje (1) - (3).

Nota: Esta CLI, si es efectiva, no es retroactiva. Es decir, el valor de actualización recientemente configurado sólo se aplica a los nuevos archivos entrantes. No tiene ningún efecto en las entradas que ya están en la memoria caché.

Eliminar entradas almacenadas en caché

Nota: El router nunca actualiza automáticamente ningún archivo obsoleto.

Los archivos obsoletos sólo se actualizan según sea necesario. ¿Por qué el router pasaría sus valiosos ciclos de CPU actualizando los archivos en la memoria caché sin saber si esos archivos se van a utilizar o cuándo, mientras que la CPU se necesita para otros servicios urgentes?

Esto significa que una entrada almacenada en memoria caché puede permanecer en la memoria caché durante mucho tiempo hasta que se elimine para dejar espacio a una copia nueva del mismo archivo o a otro archivo que sólo necesita su espacio de memoria en la memoria caché. A veces, una entrada almacenada en caché antigua puede seguir utilizándose si su antigüedad no ha superado el valor MaxStale especificado por la aplicación.

En pocas palabras, se puede calcular si una entrada almacenada en caché es antigua o todavía utilizable con estas sencillas comparaciones:

-        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 que el cliente está dispuesto a aceptar una respuesta que ha excedido su tiempo de vencimiento. Si se asigna un valor a max-stale, el cliente está dispuesto a aceptar una respuesta que ha excedido su tiempo de vencimiento en no más del número de segundos especificado. Si no se asigna ningún valor a max-stale, el cliente está dispuesto a aceptar una respuesta obsoleta de cualquier antigüedad.

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

Como se ha mencionado anteriormente, su propietario elimina una entrada almacenada en caché obsoleta según sea necesario, cuando:

La entrada almacenada en caché se vuelve obsoleta; y

Su recuento de referencias es cero (0), es decir, nadie está usando esta entrada almacenada en caché; y

Su espacio de memoria es necesario para dejar espacio a otras entradas

Esto significa que el cliente http y el reproductor multimedia IVR deben administrar y controlar sus entradas almacenadas en caché de esta manera en los modos de no transmisión y transmisión, respectivamente. ¿Qué sucede si el cliente http necesita limpiar algunas entradas obsoletas para recuperar espacio en el conjunto de memoria caché pero no es el propietario de esos archivos? Esto se convierte en responsabilidad del gestor de fondo de caché del cliente http.

El gestor de fondo de caché del cliente http se activa cada 5 minutos. Si la memoria total utilizada para las entradas almacenadas en memoria caché excede el umbral del 70% del tamaño del conjunto de memoria caché configurado, el ager recorrerá cada entrada almacenada en memoria caché. Si la entrada sigue fresca, la dejará sola. Si la entrada es obsoleta y no tiene referencia a ella, es decir, recuento de referencia = 0, el cliente http elimina la entrada por sí solo porque es el propietario legítimo de esa entrada. Si la entrada obsoleta tiene un recuento de referencia 1 en ella y no tiene ningún padre o hijo vinculado a ella, lo que significa que el archivo no se encuentra en mitad de la descarga de actualización, el cliente http vuelve a llamar para notificar al Reproductor multimedia que libere esta entrada obsoleta.

Comando Audio-Prompt Load

A veces, puede ser deseable o necesario descargar manualmente un archivo de audio en el router. Ya se nos ha dicho que el router no se dirige automáticamente al servidor http para actualizar las entradas almacenadas en caché obsoletas. Esas entradas se actualizan sólo cuando se necesitan.  Una descarga manual puede superar este problema.

Otra situación en la que una descarga manual puede ser útil es para cargar previamente un mensaje de audio grande en modo de no transmisión. Esto se puede hacer antes de que se reciba la primera llamada para que la persona que llama no experimente ningún retraso en la carga del mensaje.

Para descargar manualmente un archivo de audio determinado, ejecute este comando CLI:

audio-prompt load <url>

<url> es donde reside el archivo de audio en el servidor. Por supuesto, se espera que la memoria caché del cliente http esté configurada correctamente para guardar este archivo en la memoria caché.

Nota: Si <url> es un mensaje activo, es decir, actualmente en juego, esta CLI no surte efecto.

Fecha y hora

Además, asegúrese de que la fecha y hora entre la puerta de enlace y el servidor de medios HTTP estén sincronizadas. Esto es imprescindible.

Advertencia: No utilice clear http client cache en VXML GW. Si se invoca este comando en GW VXML muy cargado/activo, se sabe que causa problemas, corrupción de memoria y caídas. Básicamente, el uso de clear ip http client cache all no se recomienda. Lo que hace es actualizar todas las entradas de la memoria caché, y lo que sucede es que crea y elimina nodos de la lista de la memoria caché enlazada que causa algunos problemas. El comando está en proceso de ser eliminado de Cisco IOS®. El comando recomendado está configurado http client cache stale, lo que hace este comando es simplemente actualizar la parte recién cambiada de la memoria caché.