Tenemos una aplicación Angular 6. Se sirve en Nginx. Y SSL está activado.
Cuando implementamos nuevos códigos, la mayoría de las funciones nuevas funcionan bien, pero no para algunos cambios. Por ejemplo, si los desarrolladores front-end actualizan la conexión del servicio y la implementan, los usuarios deben abrir una ventana de incógnito o borrar el caché para ver la nueva función.
¿Qué tipo de cambios no se actualizan automáticamente? ¿Por qué son diferentes a los demás?
¿Cuál es la solución común para evitar el problema?
El problema es que cuando un archivo estático se almacena en caché, puede almacenarse durante largos períodos de tiempo antes de que caduque. Esto puede ser una molestia en el caso de que actualice un sitio; sin embargo, dado que la versión en caché del archivo se almacena en los navegadores de sus visitantes, es posible que no puedan ver los cambios realizados.
La eliminación de caché resuelve el problema de almacenamiento en caché del navegador mediante el uso de un identificador de versión de archivo único para decirle al navegador que hay una nueva versión del archivo disponible. Por lo tanto, el navegador no recupera el archivo antiguo de la memoria caché, sino que realiza una solicitud al servidor de origen para el nuevo archivo.
Angular cli resuelve esto al proporcionar un --output-hashing para el comando de compilación.
Consulte el documento oficial: https://angular.io/cli/build
Ejemplo (versiones anteriores)
ng build --prod --aot --output-hashing=all A continuación se muestran las opciones que puede pasar --output-hashing
Actualizaciones
Para la versión más nueva de angular (por ejemplo, Angular 10), el comando ahora se actualiza:
ng build --prod --aot --outputHashing=allSi bien la respuesta aceptada anterior funcionará, este ajuste debe realizarse en angular.json , en configurations => <my-env-name> => outputHashing => establecido en all (para entornos de producción).
Ejemplo simplificado:
{ "projects": { "<my-project>": { "architect": { "build": { "configurations": { "<my-env-name>": { "outputHashing": "all" } } } } } } }Y como se menciona en dicha publicación, las opciones disponibles para esta configuración:
- ninguno : no se ha realizado hash
- medios : solo agregue hashes a los archivos procesados a través de [url | file]-loaders
- paquetes : solo agregue hashes a los paquetes de salida
- all : agregue hashes tanto a los medios como a los paquetes