当前位置: 首页 > 知识库问答 >
问题:

AWS CloudFront缓存问题

太叔豪
2023-03-14

我正在使用链接到S3桶的AWS云前线来托管静态(反应)网站。除了我将更改的文件上传到桶中之外,一切似乎都正常。我知道设计云前线会缓存文件,你必须使更改的文件无效,以便云前线尽快获取新的更改。然而,每当我浏览网站(在不同的设备上)时,我仍然会得到旧版本的文件。有时,我会看到网页的最新版本,但后来当我浏览到同一个页面时,它会得到旧版本(即使在清除缓存或隐姓埋名浏览之后)?!非常奇怪。

关于我的设置,我有一些问题:

  • 我正在使用S3endpoint主机名从CloudFront链接到S3,而不仅仅是从列表中选择桶,因为我发现AWS将我的网站误解为REST服务(它期待XML),我发现一篇关于SO的文章说我需要链接全名。这样做可以吗,它会导致奇怪的缓存问题吗?
  • 我正在使用/*使文件无效。我无法确认这是否有效,因为云前线不会详细说明哪些文件已经无效。/*会使桶中的所有子文件夹无效,还是只使根中的文件无效?
  • 在所有文件上添加缓存控制值是否会影响无效?
  • 从CloudFrond登录是否能帮助我识别我看到的奇怪问题?

如果您能给我一些反馈,我将不胜感激,因为我是AWS的新手,而且有太多可配置的元素,有时确实让人望而生畏!

谢谢

共有2个答案

傅琦
2023-03-14

是的,确实如此,但在AWS中,你有一个解决方案。。。。

1. AWS Cloud front
2. In that Click the ID you want
3. You can able to see the Invalidations tab, click that
4. Then Create Invalidation
5. Enter -> /*   and click Invalidate 

失效完成后,您可以查看最新的更改

侯沈义
2023-03-14

在所有文件上添加缓存控制值是否会影响失效?

是的,那是你的问题。

如果要在文件上添加缓存控制,它们将缓存在客户端(浏览器)上,Cloudfront中的失效不会从客户端缓存中删除这些文件。

你有几个选择:

  • 不要为文件添加缓存控制(BAD--减慢页面加载时间)
  • 将文件的缓存控制设置为更短的时间跨度(更少的坏-在缓存过期后减慢页面加载时间)
  • 清除您网站的浏览器缓存(不太好-您的用户可能仍然会看到旧内容)
  • 完全禁用浏览器缓存(不太好-几乎减慢了每个网站)
  • 删除单页React并转到服务器端渲染(SSR)React应用程序(最好的赌注,但工作量很大。不过,完全值得)
 类似资料:
  • 主要内容:缓存穿透,缓存击穿,缓存雪崩在实际的业务场景中,Redis 一般和其他数据库搭配使用,用来减轻后端数据库的压力,比如和关系型数据库 MySQL 配合使用。 Redis 会把 MySQL 中经常被查询的数据缓存起来,比如热点数据,这样当用户来访问的时候,就不需要到 MySQL 中去查询了,而是直接获取 Redis 中的缓存数据,从而降低了后端数据库的读取压力。如果说用户查询的数据 Redis 没有,此时用户的查询请求就会转到

  • 我是flutter应用程序开发的初学者。当我在模拟器上运行我的flutter默认项目代码时,我面临这个问题: 在调试模式下在IA仿真器上的AOSP上启动lib\main.dart...运行Gradle任务'assembleDebug'... 失败:生成失败,出现异常。 错误:无法打开设置文件“C:\Users\Administrator\StudioProjects\myapp\android\s

  • 主要内容:本节引言:,1.缓存的分类:,2.为WebView开启缓存功能,3.删除WebView的缓存数据,4.示例代码下载:,5.本节小结:本节引言: 现在很多门户类信息网站,比如虎嗅,ifanr,钛媒体等等的APP,简单点说是信息阅读类的APP,很多 都是直接嵌套一个WebView用来显示相关资讯的,这可能就涉及到了WebView的缓存了! 所谓的页面缓存 就是指:保存加载一个网页时所需的HTML,JS,CSS等页面相关的数据以及其他资源,当没网的时候或者 网络状态较差的时候,加载本地保存好

  • 我有一个使用assetic的Symfony2应用程序。一切都很好,只是在localhost中,浏览器不会缓存我的资产。 任何想法,为什么以下资产没有得到缓存响应304和毫秒,而是与200响应,需要大约15秒... 响应头 Accep-Ranges bytes Cache-Control max-age=604800 Connection Keve-Alive Content-Encode gzip

  • 问题内容: 我只有一个页面,有时需要异步检查服务器,以查看页面的状态是否为当前状态(基本上是实时或离线)。您将看到我有一个带有var live的函数,该函数在页面最初加载时设置。然后,我向服务器发出ajax请求以检索live状态是true还是false。我将初始活动变量与新返回的数据json对象进行了比较。如果它们相同,则不执行任何操作,但是如果存在差异,则应用某些CSS类。我使用setTimeo

  • 问题内容: 早上好,我在生产环境中有一个Web应用程序。用户每天都在使用它,当我发布更新时,用户回到该Web应用程序时,他会查看该Web应用程序的旧版本。他需要刷新浏览器以加载新版本。我怎么解决这个问题?我每次发布更新时(每周3-4次)都无法告诉数百名用户刷新页面。 问题答案: 一个简单的解决方案是将 代表时间戳或会话ID的查询字符串 添加到文件中。 例如,在我们的春季应用中,我们只需使用: 您也