为啥我需要清理缓存才能看到我的 Angular 应用程序中的最新模块?

Posted

技术标签:

【中文标题】为啥我需要清理缓存才能看到我的 Angular 应用程序中的最新模块?【英文标题】:Why do I need to clean cache to see the up to date modules in my angular app?为什么我需要清理缓存才能看到我的 Angular 应用程序中的最新模块? 【发布时间】:2020-12-22 23:55:59 【问题描述】:

我们有一个 Angular 10 应用程序,每次我们部署到 AWS 时,甚至在 DEV 环境中(通过 ngnix)我们都需要清理缓存(CTRL+F5,这样做就解决了)。我们已经在 Angular 项目中尝试了下一个元标记:

<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

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

更新编辑:

没有像我所说的在所有组件中添加元标记。我们已经将它添加到 index.html(我们错过了将它们包含在此文件中),现在它按预期工作,但我们现在不确定它是否只是一个临时解决方案。

【问题讨论】:

【参考方案1】:

您可以执行以下步骤:

    直接将构建文件夹部署到 S3 存储桶。 不需要缓存index.html文件 每当您将构建部署或上传到 S3 时,请执行以下步骤 转到云端 使对象失效 创建条目/*

Deployment script

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

【讨论】:

以上是关于为啥我需要清理缓存才能看到我的 Angular 应用程序中的最新模块?的主要内容,如果未能解决你的问题,请参考以下文章

为啥要使用 Express 而不是 AngularJS?

苹果手机微信视频为啥不能播放?

为啥微软IE浏览器几分钟缓存就75G了,平时不用自带的IE浏览器一般用火狐或者搜狗

uniapp 开发app缓存垃圾,为什么手机垃圾清理软件扫描不到?

`yo angular` 给出错误:npm ERR!代码 ENOENT npm 错误! errno 34(是的,我已经清理了缓存并设置了 .npmignore)

如何清除缓存,以及为啥要清理缓存?