Есть в 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 - вот только несколько ссылок:
- http://issues.liferay.com/browse/LEP-384 (ОГО! Аж от 2005-ого года и версии 3.5!)
- http://issues.liferay.com/browse/LEP-1850
- http://issues.liferay.com/browse/LEP-5732
В последней даже место указано где идет (зачем-то) проверка на анонимуса - класс InvokerPortletImpl:
if ((remoteUser == null) || (_expCache == null) || (_expCache.intValue() == 0)) {
вот этот самый remoteUser == null и выключает опцию для анонимных пользователей. Для залогиненых работает - проверил - но тут то как раз кеширование не так критично.
Почему так? ХЗ - попробую спросить у Brian Chan-а если поймаю его на этом симпозиуме.
Комментариев нет:
Отправить комментарий