有没有办法缓存从 HTTP 适配器收到的响应?
Is there a way to cache the response received from a HTTP adapter?
有没有办法缓存从 IBM MobileFirst Platform 中的 http 适配器收到的响应?
如果经常使用的服务从缓存中获取数据,而不是一次又一次地访问该服务,效率会更高。即使是适配器(服务器)端缓存也会大大减少响应时间。
有没有办法在 IBM MobileFirst 中实现这一点?
没有用于缓存适配器响应的内置机制。
也许这会给你一个方法:使用 Java 以便 "manage" 缓存。您需要将逻辑实现为:
- 将数据保存在内存中(在变量中...)
- 决定何时return缓存数据
- 决定何时清除数据并将请求传递给后端
如果使用 Java脚本适配器,您可以 invoke Java code
如果使用 Java adapters(启动 MobileFirst Platform Foundation 7.0),请在那里实现它...
或许您也可以使用 CDN,您需要在其中存储数据并根据您的逻辑决定何时访问 CDN 以及何时不访问。
为了扩展 Idan 的答案,没有内置的方法可以做到这一点。一些类似这样的代码可能会有所帮助(将其放入 Java class 并从 JavaScript 适配器使用它)- 这是 未测试的 :
import java.util.HashMap;
public class MFPCache {
HashMap<String, String> cacheStore = new HashMap<String, String>();
private static MFPCache objectCache = new MFPCache();
private static MFPCache getCache() {
return objectCache;
}
public static Object getObject(String key) {
String value = getCache().cacheStore.get(key);
return value;
}
public static void setObject(String key, String value, long duration) {
getCache().cacheStore.put(key, value);
}
}
请注意,此答案不处理:
- 对象不在缓存中的情况。
- 过时的缓存条目已过期。
- Java 世界中的线程安全。
将留给其他人修复并将其编辑为答案!
有没有办法缓存从 IBM MobileFirst Platform 中的 http 适配器收到的响应?
如果经常使用的服务从缓存中获取数据,而不是一次又一次地访问该服务,效率会更高。即使是适配器(服务器)端缓存也会大大减少响应时间。
有没有办法在 IBM MobileFirst 中实现这一点?
没有用于缓存适配器响应的内置机制。
也许这会给你一个方法:使用 Java 以便 "manage" 缓存。您需要将逻辑实现为:
- 将数据保存在内存中(在变量中...)
- 决定何时return缓存数据
- 决定何时清除数据并将请求传递给后端
如果使用 Java脚本适配器,您可以 invoke Java code
如果使用 Java adapters(启动 MobileFirst Platform Foundation 7.0),请在那里实现它...
或许您也可以使用 CDN,您需要在其中存储数据并根据您的逻辑决定何时访问 CDN 以及何时不访问。
为了扩展 Idan 的答案,没有内置的方法可以做到这一点。一些类似这样的代码可能会有所帮助(将其放入 Java class 并从 JavaScript 适配器使用它)- 这是 未测试的 :
import java.util.HashMap;
public class MFPCache {
HashMap<String, String> cacheStore = new HashMap<String, String>();
private static MFPCache objectCache = new MFPCache();
private static MFPCache getCache() {
return objectCache;
}
public static Object getObject(String key) {
String value = getCache().cacheStore.get(key);
return value;
}
public static void setObject(String key, String value, long duration) {
getCache().cacheStore.put(key, value);
}
}
请注意,此答案不处理:
- 对象不在缓存中的情况。
- 过时的缓存条目已过期。
- Java 世界中的线程安全。
将留给其他人修复并将其编辑为答案!