Пожалуйста, объясните реализацию Cache в Play - PullRequest
0 голосов
/ 26 января 2012

Воспроизводит ли кеш автоматически данные? Я пытаюсь прочитать этот код, который кто-то еще написал, и он делает Cache.get в цикле foreach. Это также, где программа останавливается.

Этот человек нигде не использовал Cache.set, связанный с этим методом, поэтому я не понимаю, что происходит.

Пример кода:

for(aList page: pages){
    //blah blah code;

    Page.PageInfo pageinfo = (Page.PageInfo) Cache.get(page.url);

    //blah blah code;
}

Однако он использует Cache.set после этого цикла foreach в другом цикле foreach, но я не понимаю, как он получает что-то, если там ничего не установлено.

1 Ответ

0 голосов
/ 27 марта 2012

Play имеет собственный Cache API , который может быть поддержан реализацией EHCache по умолчанию или чем-то более продвинутым, например Memcached.

Кэш - это всего лишь кэш, поэтому не гарантируется, что вызовы Cache.get() всегда будут давать результаты. В приведенном вами фрагменте кода после вызова Cache.get() явно отсутствует нулевая проверка, чтобы увидеть, был ли найден результат. Если Cache не имеет значения, вы должны получить его из другого места (обычно это база данных, что является более дорогостоящей операцией, но гарантированно вернет результат) или продолжить работу без значения, если это не критично.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...