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

当我向数据库中添加新博客文章时,如何避免使CDN缓存无效?

田丰
2023-03-14

我使用Django REST API作为博客的后端,前端单独托管在React中。

我有一个反应前端在云前沿后面,充当CDN。

每当我想在数据库中添加一篇新的博客文章/添加任何新记录时,我都需要使缓存失效,以便它真正出现在网站上。我明白为什么会这样。

我想知道如何避免这种情况,并且在每次我想看到新内容时,不必擦除整个缓存的情况下仍能获得缓存的好处。

共有1个答案

司易安
2023-03-14

您可以使用Cache-ControlExpires头来控制对象在缓存中停留的时间。最小TTL、默认TTL和最大TTL的设置也会影响缓存持续时间,但这里概述了头如何影响缓存持续时间:

  • Cache Controlmax age指令允许您指定在CloudFront再次从源服务器获取对象之前,希望对象在缓存中保留多长时间(以秒为单位)。CloudFront支持的最短过期时间为0秒。最大值为100年。按以下格式指定值:

Cache Control:max age=seconds

例如,以下指令告诉CloudFront将关联对象保留在缓存中3600秒(一小时):

缓存控制:max-age=3600

  • 如果您希望对象停留在CloudFrongecach中的时间与它们停留在浏览器缓存中的时间不同,您可以一起使用Cache-Control max-age和Cache-Control s-maxage指令。有关详细信息,请参阅指定CloudFroncach对象的时间。

更多文档

 类似资料:
  • 我正在使用Guava缓存热数据。当缓存中不存在数据时,我必须从数据库中获取数据: 我的问题是当数据不存在于数据库中时,我希望它返回并且不做任何缓存。但Guava保存与缓存中的关键字,并抛出一个异常,当我得到它: com.google.common.cache.CacheLoader$InvalidCacheLoadExcION: CacheLoader为shisoft键返回null。 我们如何避免

  • 问题内容: 通过控制面板向Firebase实时数据库添加新值时,我想在特定字段中保存当前日期/时间。 我该如何实现? 问题答案: 最佳做法是TIMESTAMP像这样保存数据。 还要记住,将设置为时,将其设置为,但是将其获取时,则将其设置为Long。为了获取数据,我建议您使用以下方法: 编辑:模型类应如下所示: 请记住,只是一个令牌,当它在写入操作期间用作子值时,它将转换为服务器端的数字。该日期仅在

  • 问题内容: 通过控制面板将新值添加到Firebase实时数据库时,我想在特定字段中保存当前日期/时间。 我该如何实现? 请帮我。 问题答案: 最好的做法是将您的数据保存为一个TIMESTAMP像这样ServerValue.TIMESTAMP。 还要记住,将设置为时,将其TIMESTAMP设置为Map,但是将其检索时,则将其设置为Long。为了获取数据,我建议您使用以下方法: 编辑:模型类应如下所示

  • 问题内容: 某些数据库功能(例如和)很容易受到死锁的影响,因为数据库未指定将使用哪种锁定顺序。我发现有两次 讨论暗示此行为不是SQL标准指定的,更不用说具体的实现了。因此,我在假设我们无法控制锁定顺序的情况下进行操作(至少,这样做并不明显)。 如果我们不能依赖锁定顺序,应该如何避免数据库死锁? 如果我们不应该避免僵局(您将不得不非常努力地说服我),那么我们应该怎么做? 这个问题与数据库无关,所以请

  • 我无法在Firebase实时数据库中添加任何数据。数据库连接正常,但我无法添加任何数据。当我单击“到”按钮时,添加到数据库中的数据。 主要活动。java-代码 事件。java-代码

  • 我怎样才能做到这一点? 请帮帮我.