Есть ли способ кэшировать ответ, полученный от адаптера HTTP?

Есть ли способ кэшировать ответ, полученный от http-адаптера в IBM MobileFirst Platform?

Было бы более эффективно получать данные из кеша для часто используемых сервисов, а не обращаться к сервису снова и снова. Даже кэширование на стороне адаптера (сервера) значительно сократит время отклика.

Есть ли способ добиться этого в IBM MobileFirst?


person Harshith M    schedule 13.05.2015    source источник


Ответы (2)


Нет встроенного механизма кэширования ответа адаптера.

Возможно, это даст вам способ сделать это: использовать Java для «управления» кэшированием. Вам нужно будет реализовать логику для:

  1. Сохранить данные в памяти (в переменных...)
  2. Решите, когда возвращать кэшированные данные
  3. Решите, когда очистить данные и передать запрос серверной части

При использовании адаптеров JavaScript вы можете вызвать код Java
При использовании Адаптеры Java (начиная с MobileFirst Platform Foundation 7.0), реализуйте его там...

Возможно, вы также могли бы использовать CDN, где вам нужно будет хранить данные и решать в своей логике, когда обращаться к CDN, а когда нет.

person Idan Adar    schedule 13.05.2015
comment
Спасибо за разъяснение Идан - person Harshith M; 13.05.2015

Чтобы расширить ответ Идана, встроенного способа сделать это нет. Может помочь примерно такой код (поместите его в класс 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.

Оставлю это другим, чтобы исправить и отредактировать их в ответе!

person Andrew Ferrier    schedule 21.10.2015
comment
Привет, Эндрю, не могли бы вы поделиться дополнительной информацией о том, как вы вызываете этот класс из своего JS-адаптера? - person maggix; 07.09.2016