为啥我需要清理缓存才能看到我的 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 应用程序中的最新模块?的主要内容,如果未能解决你的问题,请参考以下文章
为啥微软IE浏览器几分钟缓存就75G了,平时不用自带的IE浏览器一般用火狐或者搜狗
uniapp 开发app缓存垃圾,为什么手机垃圾清理软件扫描不到?
`yo angular` 给出错误:npm ERR!代码 ENOENT npm 错误! errno 34(是的,我已经清理了缓存并设置了 .npmignore)