Expanda una nueva versión de JavaScript, css y contenido gráfico, utilizando ASP .NET MVC

Quiero que mi JavaScript al que se hace referencia a través de etiquetas <script>, mi css y varios archivos gráficos se guarden en el navegador del usuario para una versión determinada de mi sitio. Sin embargo, cuando publico una actualización de un archivo, me gustaría asegurarme de que el nuevo contenido (Javascript, css, gráficos, etc.) se actualizará en la máquina del usuario.

Al investigar este problema, he encontrado una serie de posibles soluciones:

Ajuste los encabezados http para cosas como el control de caché y caducaAgregue una cadena de consulta única a cada solicitud de recursoIncluya un número de versión en la ruta (o nombre de archivo) del recurso solicitado

Mi preocupación con la opción 1 (aparte de no saber cómo implementarla para algunos tipos de contenido) es que si hay un proxy intermedio entre el navegador y IIS, entonces el proxy intermedio no debe respetar los encabezados http, y el contenido se almacenará en caché entre El navegador y el proxy.

Mi preocupación con la opción 2 es doble. Por un lado, si solo uso un número aleatorio o una marca de tiempo, entonces el navegador solicitará un nuevo recurso cada vez, omitiendo el caché local incluso cuando el contenido no haya cambiado (cuando no haya entre versiones). Una solución a este problema es usar la marca de tiempo del archivo de recursos o un hash del archivo; esto cambiaría solo cuando se produzca una nueva versión. Sin embargo, esto me llevó a mi segunda preocupación: entiendo que algunos proxies web nunca cachean nada con una cadena de consulta, de forma predeterminada (http://stackoverflow.com/questions/5541340/how-can-i-prevent-javascript-caching- consulta-enfoque-no-funciona-es. Si bien es probable que esto sea personalizable, no me gustaría confiar en que el administrador cambie una configuración de la predeterminada para obtener el beneficio de rendimiento del almacenamiento en caché.

La opción 3 parece ser la mejor opción, pero no sé cómo implementarla de una manera práctica, para ASP .NET MVC (actualmente usa ASP .NET MVC 3). Por un lado, podría ingresar a cada archivo que enlaza con un archivo gráfico, css o javascript externo y cambiar la ruta para incluir un número de versión diferente para cada versión, pero claramente esto es tedioso y propenso a errores.

Mis preguntas entonces son:

1) ¿Hay otras estrategias para evitar el almacenamiento en caché (para una versión determinada) que debería considerar y

2) Suponiendo que uso la opción 3 (incluido un número de versión en la ruta del recurso), ¿cómo puedo lograr esto en una aplicación ASP .NET MVC, de una manera que sea realista de mantener?

Gracias,

Notre

Respuestas a la pregunta(2)

Su respuesta a la pregunta