2010-01-28 11 views
6

La empresa para la que trabajo tiene aceleradores proxy/WAN entre nuestros sitios internacionales para almacenar en caché contenido web de Intranet. Tengo una aplicación de Silverlight alojada en un servidor en una ubicación, pero a la que acceden los clientes en otra ubicación. Cuando los usuarios acceden a la página web que aloja la aplicación Silverlight, obtienen el archivo xap obsoleto almacenado en caché por el proxy y no la última versión del servidor. Los usuarios locales siempre obtienen el último xap ya que sus solicitudes no pasan por un proxy.Evite que el servidor proxy almacene en memoria de caché Silverlight xap

He intentado las diversas técnicas de encabezado/metadato mencionadas en otra parte para evitar el almacenamiento en caché, y la página web que contiene se está actualizando, pero sigo recibiendo el antiguo archivo .xap. A menos que nuestro administrador de TI desactive el caché de proxy para mi sitio, ¿hay algo que pueda hacer para asegurarme de que el último archivo xap se recupere del servidor en lugar del proxy? La página que contiene es ASP.NET.

Respuesta

4

Lo que hago es simplemente agregar una cadena de consulta al final de la ruta al archivo xap. Luego, cuando cambie la variable de la cadena de consulta, los proxies, etc. deberían verla como una solicitud a un nuevo archivo. Hasta ahora, esto ha funcionado bien para mí.

Así que, básicamente, al incrustar un .xap en un archivo HTML recto-para arriba, usted podría hacer esto:

<param name="source" value="ClientBin/SilverlightApplication1.xap?cachepreventer=whatevervalue"/> 

Y luego, cuando se implementa una nueva versión, solo cambia "whatevervalue" a otra cosa.

EDITAR
Si es necesario utilizar esta técnica en muchos lugares en su aplicación me gustaría leer el valor de cadena de consulta config y acaba de escribir a la página utilizando asp.net. De esta forma, solo necesita actualizarlo en un lugar cuando implemente.

+0

¡Perfecto! Eso hizo el truco, gracias. –

+0

En mi solución SL, cualquier valor es la marca de tiempo (marcar el número) del archivo XAP en el disco. He implementado una pequeña ayuda ASP.NET que agrega la marca de tiempo como una consulta al nombre del archivo. De esta manera, es totalmente automático y no necesita actualizar nada en ninguna parte: simplemente suelte XAP en ClientBin y se actualiza automáticamente cuando el usuario intenta recuperarlo. Luego, en ASPX, tengo algo como: " /> –

+0

Eso es realmente inteligente. Podría decidir cambiar a esa técnica. –

2

Si desea asegurarse de que cada vez que el archivo XAP se recupera y no quieren preocuparse por ello - sólo tiene que utilizar < param name = valor "fuente" = "ClientBin/YourSilverlightapp.xap < % = Guid.NewGuid(). ToString()% > "/ >

por supuesto, esto se presta a una carga de caché más pesada. Aunque me gusta el método de ayuda más arriba si solo quieres que los cambios se propaguen al cliente.

Cuestiones relacionadas