Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

1.4K
Vistas
La aplicación Angular 12 aún se almacena en caché con output-hashing = all

Tengo una aplicación Angular 12 que tiene diferentes entornos de compilación (dev/staging/prod) y los configuré con hash de salida en angular.json :

 "configurations": { "production": { "fileReplacements": [ { "replace": "src/environments/environment.ts", "with": "src/environments/environment.prod.ts" } ], "optimization": true, "outputHashing": "all" <-----

Los archivos de salida incluyen un hash, pero sigo viendo la versión anterior a menos que haga una actualización completa en el navegador.

 main.07258fce7f84f8b6013e.js polyfills.4cc5b416b55531e38cd8.js runtime.734c276f75a5d81bc54b.js

La página de destino es solo un formulario de inicio de sesión, pero la versión se muestra debajo del formulario. Muestra la versión anterior hasta la actualización completa en el navegador, momento en el que muestra correctamente la nueva versión.

¿Esto se debe a que index.html se almacena en caché junto con todas sus antiguas referencias de JS?

Si es así, ¿cómo cacheo esto?

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

En caso de que esté utilizando un trabajador de servicio (por ejemplo, @angular/pwa que instala @angular/service-worker ), el navegador almacena en caché toda la aplicación angular. Esto incluye index.html + todos los archivos javascript + todas las hojas de estilo.

Para enviar una nueva versión de su aplicación a sus usuarios, debe hacer 2 cosas:

Actualice su ngsw-config.json en cada nueva versión:

 { "version": 1, // Or ascending ... }

Llame SwUpdate :

 constructor(private swUpdate: SwUpdate) { ... //#region Check for updates if (this.swUpdate.isEnabled) { this.swUpdate.activated.subscribe((upd) => { window.location.reload(); }); this.swUpdate.available.subscribe((upd) => { this.swUpdate.activateUpdate(); }, (error) => { console.error(error); }); this.swUpdate.checkForUpdate().then(() => { }).catch((error) => { console.error('Could not check for app updates', error); }); } //#endregion }

aquí hay un ejemplo

over 4 years ago · Santiago Trujillo Denunciar

0

Pude resolver esto instruyendo a la política de control de caché del servidor web para que no almacene en caché el archivo HTML. Esto es necesario porque el archivo HTML contiene las referencias a los scripts hash de Angular y CSS.

Estamos lanzando actualizaciones frecuentes, así que por ahora, estoy configurando esto para que no se almacene en caché, pero se puede ajustar a períodos de tiempo más largos según sea necesario.

En nuestro caso, usamos IIS y tuve que crear una regla de reescritura de IIS en el archivo web.config.

 <outboundRules> <rule name="RewriteCacheControlForHTMLFiles" preCondition="FileEndsWithHtml"> <match serverVariable="RESPONSE_Cache_Control" pattern=".*" /> <action type="Rewrite" value="max-age=0" /> </rule> <preConditions> <preCondition name="FileEndsWithHtml"> <add input="{REQUEST_FILENAME}" pattern="\.html$" /> </preCondition> </preConditions> </outboundRules>
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda