javascript - inside - sintaxis razor mvc 5
MVC 5 JavaScript Caching (1)
Esta pregunta ya tiene una respuesta aquí:
Estoy codificando una aplicación de Internet MVC 5 y tengo una pregunta con respecto al almacenamiento en caché de JavaScript (y el almacenamiento en caché en general).
Actualmente, cuando actualizo un archivo JavaScript al que se hace referencia en una vista, cuando navego a la vista, se utiliza el código JavaScript anterior. Si luego actualizo el navegador, entonces se usa el código JavaScript actualizado.
Esto no es ideal, ya que un usuario a menudo puede navegar a una vista que tiene un archivo JavaScript antiguo, y como tal, la vista puede no mostrarse correctamente.
Actualmente estoy haciendo referencia a los archivos JavaScript de la siguiente manera:
@section Scripts{
<script src="~/Scripts/filename.js"></script>
}
¿Hay una configuración web.config que controle el almacenamiento en caché? ¿Hay algún paquete NuGet que pueda ayudar con el almacenamiento en caché?
¿Cómo puedo resolver esta situación?
MVC Bundling proporciona una solución a este problema.
Para aprovecharlo, App_Start/BundleConfig.cs
a tu archivo App_Start/BundleConfig.cs
:
bundles.Add(
new ScriptBundle("~/bundles/filename")
.Include("~/Scripts/filename.js"));
Entonces en tu opinión:
@section Scripts{
@Scripts.Render("~/bundles/filename")
}
Por qué esto ayuda
En una compilación de Release
, todos los archivos Javascript en un paquete se servirán desde una URL única que contiene un hash de su contenido. Esto significa que si los archivos Javascript cambian entre compilaciones, la URL del paquete cambiará, por lo que los navegadores descargarán la nueva versión.
El paquete también se sirve con un encabezado Expires HTTP 1 año en el futuro, lo que mejora la velocidad de respuesta del sitio en futuras visitas de usuarios / solicitudes de página. Puede hacerlo de forma segura porque la URL cambia cuando cambia el contenido del paquete.
Incluso si solo incluye un solo archivo de Javascript en una página, igual crearía un paquete para ello, para aprovechar el control de caché y también la minificación.
Consulte la sección sobre "Almacenamiento en caché de paquetes" en el artículo vinculado para obtener una explicación más detallada.