如何缓存 API 响应?

8
我正在使用API http://exchangeratesapi.io/ 获取汇率信息。
他们的网站要求:
请尽可能缓存结果,这将使我们可以保持服务而无需任何速率限制或API密钥要求。
- source 然后我发现了这个:
默认情况下,对 exchangeratesapi.io API 的所有请求的响应都被缓存。这可以显著提高性能并减少服务器带宽。
- somebody's project on github,不确定是否准确
我从未缓存过任何内容,这两个声明让我感到困惑。当API网站说“请缓存结果”时,听起来好像可以在fetch请求中进行缓存,或者以某种方式在前端进行缓存。例如,一些方法可以将结果存储在本地存储中等等。但是我找不到有关如何执行此操作的任何资源。我只找到了有关如何强制响应不缓存的资源。
第二句话的意思是,由于API自动将响应设置为缓存,因此它让人感觉缓存是API在其服务器上执行的操作。
我该如何像API网站要求的那样对结果进行缓存?
1个回答

9
为了解决你所提到的矛盾陈述,缓存只是指存储数据。数据可以存储在内存中、持久层(如Redis)或浏览器的本地存储(如你所提到的)。缓存背后的目的可能是为了将来的请求/获取更快地提供数据(与从主数据源获取相比),和/或为了避免重复获取相同的数据而节省成本,等等。
对于你的情况,http://exchangeratesapi.io/ API建议消费者在他们的一侧缓存结果(如你在问题中提到的,如果你调用API前端代码,则可以在浏览器的本地存储中进行,或者在调用API的服务器端应用程序代码中存储在内存或其他缓存机制/结构中),以避免引入速率限制。
你所提到的Github项目Laravel Exchange Rates似乎是原始API的PHP封装器,它就像是API和开发者的PHP代码之间的中间人。其目的是使在PHP代码中使用API更加容易,并避免进行原始HTTP请求和处理响应;Laravel Exchange Rates为开发者处理这些问题。
关于你所问的

默认情况下,对exchangeratesapi.io API的所有请求的响应都被缓存

声明,似乎该库遵循API的建议,并缓存来自源API的结果。
因此,总结一下:
  1. http://exchangeratesapi.io/ 是源API,并建议消费者缓存结果。如果您的代码将调用此API,则可以在自己的代码中缓存结果。
  2. Laravel汇率PHP库是该源API的包装器,并且确实为用户缓存了来自源API的结果。如果您正在使用此库,则不需要进一步缓存。

谢谢澄清! - Dashiell Rose Bark-Huss

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接