有没有办法缓存从HTTP适配器收到的响应?

时间:2015-05-13 13:22:12

标签: performance caching ibm-mobilefirst mobilefirst-adapters mobilefirst-server

有没有办法缓存从IBM MobileFirst Platform中的http适配器收到的响应?

从缓存中获取常用服务的数据而不是一次又一次地访问服务会更有效。即使是适配器(服务器)端缓存也会大大缩短响应时间。

有没有办法在IBM MobileFirst中实现这一目标?

2 个答案:

答案 0 :(得分:0)

没有内置机制来缓存适配器响应。

也许这会为你提供一种方法:使用Java来管理"缓存。您需要将逻辑实现为:

  1. 保留内存中的数据(在变量中......)
  2. 决定何时返回缓存数据
  3. 决定何时清除数据并将请求传递给后端
  4. 如果使用JavaScript适配器,您可以invoke Java code
    如果使用Java adapters(启动MobileFirst Platform Foundation 7.0),请在那里实现...

    也许你也可以使用CDN,你需要在那里存储数据并决定你的逻辑何时到达CDN以及什么时候不到。

答案 1 :(得分:0)

为了扩展Idan的答案,没有内置的方法可以做到这一点。一些类似于此的代码可能会有所帮助(将它放在Java类中并从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世界中的线程安全。

将留给其他人修复并编辑这些答案!