我有一个无服务器lambda,它可以执行以下操作:
- 从查询中的一组
ids
开始(example.com?ids=a,b,c
( - 对我不控制的另一个Web服务(基于给定的
ids
(进行HTTP请求 - 基于其他Web服务响应呈现网站
一切正常,到目前为止没有任何问题。
今天我为我的网站介绍了一个新的用户界面。用户可以在";"表视图";以及";列表视图";。因为这些差异视图也可以通过(另一个(查询参数来控制;重定向";到我自己的网站。假设我当前正在查看表视图;显示列表视图";text字段我有一个简单的<a href="example.com?ids=a,b,c&view=list">[...]<a>
。
当然,这种重定向会导致对";其他网络服务";。即使我可以非常确定内容自上次通话(几秒钟/分钟前(以来没有改变。
我的问题是:
我可以以某种方式缓存lambda中的HTTP请求,这样我们就不会再调用了吗?我对Cache-Control
标头有所了解,但由于它是一个无服务器环境,它可以(而且可能会(!我不知道,但我甚至不在乎😅)另一台没有此缓存的机器。因此,它不会是缓存命中,无论如何都会处理请求。
请不要用";使用JavaScript来改变UI";。我知道这是可能的,但我的主要问题是如何(甚至是否可以(在无服务器环境中缓存此类请求。
提前感谢!
从文档和常见最佳实践中,我们得到的印象是,无服务器函数或更具体地说,AWS Lambda函数的使用寿命非常短。关键是,我们需要假设一个函数只为单个调用提供到其(爆竹(微容器中,然后再取消提供。
然而,为了保护资源和提高性能,Lambda的生命周期是:资源调配、用于几个不同的函数调用、取消资源调配。
这意味着无论使用的语言如何,容器都会在一定的时间内得到重用。在那段时间内创建的全局资源(全局变量、静态对象、文件(将在单个函数调用之后继续存在。
您的案例
在您的具体情况下,您可以实现您想要的任何缓存策略。这应该在大多数情况下适用于您的用例,其中有两个陷阱需要注意:
- 微容器在不同客户端之间的请求之间重复使用。这意味着您当然需要有一种访问控制缓存的方法,如果这与您的用例相关的话
- 您不能直接控制Lambda的超时时间,这意味着您应该预料到,偶尔用户会因为时间不好而体验到非缓存请求的开销
让我们了解您的最终解决方案。