Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

1.4K
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda