如何给基于|如何给基于 SAP Cloud SDK 的应用增添缓存支持 Cache support
Introduce Caching to Your Application
本文目录
- What caching is and why you should care about it
- How a cache works
- How to cache your OData Call
- How to configure the cache
为了提高对用户的响应能力,您的应用程序内部请求的数据通常可以存储以供后续调用使用。这可以通过这样的方式来实现,即对于每个请求,应用程序之前存储的信息都可以重复使用。这种一般行为称为缓存。缓存存储通过它的信息的副本。除了提高响应能力外,技术目标是降低整体所需的带宽和处理要求,从而最终减少服务器负载和感知延迟。通过这种方式,可以减少需要跨网络传输的信息量。
缓存在各种用例中都非常重要。这是我们现代互联网体验进步的原因之一,例如按需多媒体流媒体和持久云存储。与保存整个请求和响应文档的 Web 缓存不同,内部应用程序缓存用于为多个预期用途持久保存临时数据。每当信息的计算或检索成本很高,并且不止一次需要它在某个输入上的值时,就应该考虑缓存。
How do they work 缓存通常通过向给定主题(称为键)请求信息的操作来工作。如果先前请求给定键的信息,在请求时存储,并且现在可以读取,则会发生所谓的“缓存命中”:可以找到数据并将加载。当它不能时会发生“缓存未命中”。
缓存最重要的方面是其大小和其项目的生命周期。两者都应针对用例进行限制,以避免应用程序中出现过时的状态或不成比例的内存消耗。当应用程序从外部源重复读取更大的数据块时,可以看到使用缓存的最大影响。在这种情况下,使用缓存会显着减少传输信息所需的带宽。
缓存适用于:
- 你愿意花一些内存来提高速度。
- 您希望密钥有时会被多次查询。
- 您的缓存不需要存储比 RAM 所能容纳的更多的数据。
(默认情况下,缓存在应用程序的单次运行中是本地的。它不会将数据存储在文件中,也不会存储在外部服务器上。)
Caching with SAP Cloud SDK Cloud SDK 可以轻松地缓存您的请求,因为它可以在后台处理大部分复杂性。 这包括处理租户感知请求,这在多租户应用程序中是必不可少的。 如果您的请求需要,SDK 将自动隔离租户或主体级别的缓存。
在 SAP Cloud SDK 中,JCache (JSR 107) 用作底层缓存技术。 在本文的例子中,您将为此使用 JCache 适配器 Caffeine,但您可以使用任何您喜欢的实现。 对于 Caffeine,将以下依赖项添加到您的应用程序 pom.xml:
com.github.ben-manes.caffeine
jcache
runtime
2.7.0
Cache your OData call 既然我们已经讨论了为什么缓存很重要,以及它如何帮助我们提高性能和响应能力,现在是时候将它引入您的应用程序了。
现在,为了使我们的 OData 调用可缓存,您将增强 ResilienceConfiguration 并向其添加 CacheConfiguration.
在 GetBusinessPartnerCommand 的构造函数末尾添加以下几行:
./application/src/main/java/com/sap/cloud/sdk/tutorial/GetBusinessPartnersCommand.java
final ResilienceConfiguration.CacheConfiguration cacheConfig =
ResilienceConfiguration.CacheConfiguration
.of(Duration.ofSeconds(10))
.withoutParameters();
myResilienceConfig.cacheConfiguration(cacheConfig);
如上所述,ResilienceConfiguration 用于集成缓存功能,在 CacheConfiguration 中进行了描述。您的配置有两个步骤:
a. 确定对象要缓存多长时间
b. 声明需要与缓存数据一起存储的参数
第一步显然是必要的,因为数据应该只存储有限的时间。保存缓存信息的时间越长,它就会变得越过时。您希望将数据缓存多长时间取决于您的特定用例。您预计信息过时的速度有多快?访问数据的频率如何?超时设置了数据是最新的和应用程序响应之间的权衡。
其次,您指定要与数据一起缓存的参数。对于检索业务合作伙伴列表的请求,不需要参数,因此您可以使用htoutParameters 构建缓存。但是假设您想通过将 ID 传递给系统来获取有关特定业务合作伙伴的信息。为了缓存这样的请求,缓存不仅需要记住接收到的结果,还需要记住与之关联的 ID。在这种情况下,可以使用 .withParameters(param1, param2, ..) 简单地传递这些参数。
【如何给基于|如何给基于 SAP Cloud SDK 的应用增添缓存支持 Cache support】随意测试与发出的第一个请求相比,后续请求的响应速度更快。在本地或云中部署您的应用程序,并多次访问业务合作伙伴列表。
推荐阅读
- 喂,你结婚我给你随了个红包
- 考研英语阅读终极解决方案——阅读理解如何巧拿高分
- 如何寻找情感问答App的分析切入点
- 成交的种子咖啡冥想
- 一百二十三夜,请嫁给我
- 基于微信小程序带后端ssm接口小区物业管理平台设计
- mybatisplus如何在xml的连表查询中使用queryWrapper
- MybatisPlus使用queryWrapper如何实现复杂查询
- 每日一话(49)——一位清华教授在朋友圈给大学生的9条建议
- 基于|基于 antd 风格的 element-table + pagination 的二次封装