Das*_*uss 8 caching http cache-control browser-cache
我正在使用 apihttp://exchangeratesapi.io/来获取汇率。
他们的网站询问:
请尽可能缓存结果,这将使我们能够在没有任何速率限制或 API 密钥要求的情况下保持服务。
-来源
然后我发现了这个:
默认情况下,对 Exchangeratesapi.io API 的所有请求的响应都会被缓存。这可以显着提高性能并减少服务器的带宽。
- github上某人的项目,不确定是否准确
我以前从未缓存过某些东西,这两个语句让我很困惑。当 API 的网站说“请缓存结果”时,听起来缓存是我可以在请求中fetch或以某种方式在前端执行的操作。例如,将结果存储在本地存储中的某种方式。但我找不到任何有关如何执行此操作的信息。我只找到了有关如何强制响应不缓存的资源。
第二个引言听起来好像缓存是 API 在其服务器上自行执行的操作,因为它们将响应设置为自动缓存。
如何按照 api 站点的要求缓存结果?
Abd*_*dul 10
为了消除您对所引用的相互矛盾的陈述的困惑:
缓存只是存储数据的意思。数据可以存储在内存中、某些持久层(如 Redis)或浏览器的本地存储(如您提到的)中。缓存背后的目的可以是为将来的请求/获取更快地提供数据(与从主数据源获取数据相比),和/或节省重复获取相同数据的成本等。
对于您的情况,http://exchangeratesapi.io/API建议消费者将结果缓存在他们这边(正如您在问题中提到的,如果您调用API前端前端代码,这可以位于浏览器的本地存储中,或者存储在内存中)或调用 API 的服务器端应用程序代码上的其他缓存机制/结构),这样它们就可以避免引入速率限制。
您引用的 Github 项目Laravel Exchange Rates似乎是原始 API 的 PHP 包装器 - 因此它就像 API 和开发人员的 PHP 代码之间的中间人。目的是使在 PHP 代码中使用 API 变得更容易,并避免必须向 API 发出原始 HTTP 请求并避免处理响应;Laravel Exchange Rates为开发者处理这个问题。
关于
默认情况下,对 Exchangeratesapi.io API 的所有请求的响应都会被缓存
您所询问的声明,似乎该库遵循了 API 的建议,并缓存了源 API 的结果。
所以,总结一下:
http://exchangeratesapi.io/是源API,它建议消费者缓存结果。如果您的代码要调用此 API,您可以将结果缓存在您自己的代码中。