首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >缓存和使AWS Lambda响应无效

缓存和使AWS Lambda响应无效
EN

Stack Overflow用户
提问于 2017-07-23 04:24:11
回答 1查看 1.4K关注 0票数 0

我试图在AWS上实现一个解决方案,如下所示:

我有一个爬虫,将运行一天一次,以索引某些网站。我想缓存这些数据,并以API的形式公开它,因为爬行之后,这些数据将在一整天内不会改变。在爬行器重取之后,我想要使这个缓存失效并重新构建,以服务于更新的数据。我正在尝试使用无服务器架构来构建这个系统。

可能的解决方案

很明显,爬虫将运行在AWS Lambda上。我不清楚的是如何管理将为数据服务的缓存。以下是我想出的一些解决办法

  1. S3和Cloudfront用于缓存:爬行后,以.json文件的形式将数据存储在S3中,这些文件将使用AWS进行缓存。当爬虫重新获取新数据时,它将重新生成这些文件,并要求Cloudfront使缓存失效。
  2. API网关DynamoDB:爬行后将数据存储在DynamoDB中,然后由缓存的After提供服务。这里唯一的问题是,当爬虫重新爬行时,我如何才能要求这个缓存失效?由于数据一天是静态的,我怎么能不支付DynamoDB将运行的额外时间(因为如果我在API上实现缓存,那么在此之后只会调用一次DynamoDB缓存,它将空闲一天)

还有别的办法让我错过吗?

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2017-07-25 10:34:39

您可以在S3中的不同路径中存储新数据,其中包括创建日期。也许是这样:

代码语言:javascript
复制
index_2017_08_11.json

然后,就没有必要使CloudFront端的缓存无效。因为要访问这些新对象,您需要提供新的URL,所以旧的CloudFront缓存不会成为问题。您可以使用S3删除前一天的S3 TTL特征文件。

另一种选择是将过期缓存HTTP头设置为在缓存应该无效中的数据设置时

字段允许您使用RFC 2616,超文本传输协议-- HTTP/1.1节3.3.1节中指定的格式指定过期日期和时间,例如:星期六,2015年6月27日23:59:59格林尼治时间

您可以在API中设置此标头,以指定对象何时失效。

由于数据将是静态的一天,我怎么能不支付额外的时间,DynamoDB将运行

如果数据是静态的,您是否可以将其存储在S3中,并使用API来提供来自S3而不是DynamoDB的数据?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45261473

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档