Escribí mi aplicación web en C# usando .NET Core 5.0 MVC. Estoy usando el enrutamiento en el controlador para asignar direcciones URL y servir vistas que usan Razor. Ejecuto la aplicación en un servidor Linux usando el tiempo de ejecución de .Net core y luego alojo la aplicación usando un servidor proxy inverso nginx.
Realizo cambios frecuentes en mi sitio web y se basa en extracciones en tiempo real de mi base de datos para obtener las estadísticas más recientes para mostrar al usuario, por lo que es vital que las vistas que ofrezco estén actualizadas.
PROBLEMA: Por alguna razón, puedo publicar e implementar código nuevo y aparecerá bien en mi escritorio pero no en dispositivos móviles o en los escritorios de mis amigos (a veces sí, a veces no). Puedo ver nuevos cambios si cambio la URL ligeramente como google.com/test a google.com/Test. Mis rutas tampoco distinguen entre mayúsculas y minúsculas, pero todos mis enlaces de SEO/google tienen la versión en minúsculas/en caché.
Después de investigar, llegué a la conclusión de que los diferentes navegadores/aplicaciones están almacenando en caché mi HTML/JS/CSS y no obtienen lo último del servidor.
He intentado lo siguiente :
Instalar el paquete NuGet "Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation" y llamar
services.AddControllersWithViews().AddRazorRuntimeCompilation();en mi método ConfigureServices.
Agregar lo siguiente a mi archivo de diseño:
<meta http-equiv="cache-control" content="max-age=0" /> <meta http-equiv="cache-control" content="no-cache, no-store, must-revalidate"> <meta http-equiv="expires" content="-1" /> <meta http-equiv="expires" content="Tue, 01 Jan 1980 1:00:00 GMT" /> <meta http-equiv="pragma" content="no-cache" />Agregando esto a las acciones de mi controlador que devuelven las vistas:
[ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]Estoy alojando mi servidor de aplicaciones web usando un servidor proxy inverso nginx, e intenté agregar algunas de las cosas que vi en línea para evitar el almacenamiento en caché sin suerte.
Nada ha funcionado consistentemente para mi dispositivo móvil (Android con Chrome).
¿Alguien más ha encontrado esto o posiblemente sabe de una solución?
¿Ha intentado usar asp-append-version que proporciona ASP.NET?
Se puede usar de esta manera para css/js
<link rel="stylesheet" href="~/css/site.css" asp-append-version="true"/>