为什么我需要清理缓存以查看我的角度应用程序中的最新模块?

问题描述

我们有一个Angular 10应用程序,每次我们部署到AWS时,甚至在DEV环境中(在ngnix之上),我们都需要清理缓存(CTRL + F5,可以解决此问题)。我们已经在Angular项目中尝试了下一个Meta标签

<Meta http-equiv="cache-control" content="no-cache,must-revalidate,post-check=0,precheck=0">
<Meta http-equiv="expires" content="0">
<Meta http-equiv="pragma" content="no-cache">

我们尝试过的另一种想法是通过部署交替哈希文件名。一次不进行哈希处理,而下一次进行哈希处理。例如:

6-es5.js -> changes to -> 6-es5.b0d27b410e5c019afd47.js

在AWS S3(通过Amazon Cloudfront)中,我们尝试设置

Minimum TTL 0
Maximum TTL 0
Default TTL 0

我们现在不知道还有什么其他的想法可能可行,或者我们做错了什么。任何想法都会有所帮助。谢谢大家!

更新编辑:

没有像我在所有组件中所说的那样添加Meta标签。我们已经将它添加到index.html(我们错过了将它们包含在此文件中)的功能,现在它可以按预期运行,但是现在还不确定它是否只是暂时的解决方案。

解决方法

您可以执行以下步骤:

  1. 直接将构建文件夹部署到S3存储桶。
  2. 不需要缓存index.html文件
  3. 无论何时将构建部署或上载到S3,请执行以下步骤
  4. 转到云端
  5. 使对象无效
  6. 创建条目/ *

enter image description here

Deployment script

对于连续部署,您可以使用boto3的aws编写脚本,以在文件夹成功上传后自动使缓存无效。