вторник, 9 октября 2012 г.

Liferay & expiration-cache

Как-то не приходилось с этим сталкиваться - а тут наложилось - что и спросили - и самому потребовалось.

Есть в portlet.xml такая опция для портлетов  expiration-cache. Дословно:
Expiration-cache defines expiration-based caching for this portlet. The parameter indicates the time in seconds after which the portlet output expires. -1 indicates that the output never expires.

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

if ((remoteUser == null) || (_expCache == null) || (_expCache.intValue() == 0)) {

вот этот самый  remoteUser == null  и выключает опцию для анонимных пользователей. Для залогиненых работает - проверил - но тут то как раз кеширование не так критично.

Почему так? ХЗ - попробую спросить у   Brian Chan-а если поймаю его на этом симпозиуме.

Комментариев нет: