Как отключить кеш портлета Liferay?
Я разрабатываю portlet для Liferay Portal.
Я отключил кеширование CSS и JavaScript, используя эти коды в файле portal-developer.properties:
theme.css.fast.load=false
theme.images.fast.load=false
javascript.fast.load=false
javascript.log.enabled=true
layout.template.cache.enabled=false
last.modified.check=false
velocity.engine.resource.manager.cache.enabled=false
com.liferay.portal.servlet.filters.cache.CacheFilter=false
com.liferay.portal.servlet.filters.layoutcache.LayoutCacheFilter=false
Но я не знаю, как отключить кэширование портлетов.
Когда я обновляю файл view.jsp в своем каталоге портлетов, я должен перезапустить Tomcat, чтобы увидеть изменения.
Ответы
Ответ 1
В последней версии Liferay 6.2 вы можете включить режим разработки.
При использовании Liferay IDE
- Перейдите в представление "Серверы" и дважды щелкните по серверу.
![enter image description here]()
- Выберите режим разработки, сохраните конфигурацию и перезапустите сервер.
![enter image description here]()
Если вы не используете Liferay IDE
- Изменить setenv.sh или setenv.bat(для Windows) в $LIFERAY_DIR/$TOMCAT_DIR/bin/
- Добавить -Dexternal-properties = portal-developer.properties в CATALINA_OPTS
Справка:
https://www.liferay.com/documentation/liferay-portal/6.2/development/-/ai/using-developer-mode-with-themes-liferay-portal-6-2-dev-guide-09-en
Ответ 2
У меня были такие проблемы с некоторыми несогласованными часами: когда вы редактируете jsp через сетевое соединение, и ваш компьютер считает, что 10:00, пока сервер считает, что это уже 10:05, это может произойти:
- Вы меняете jsp в 10:01
- Tomcat видит и компилирует - все работает так, как ожидалось, но на скомпилированной странице есть отметка времени 10:06
- Вы снова меняете jsp в 10:03
- Tomcat видит измененную метку времени и сравнивает ее с меткой времени скомпилированной страницы: скомпилированная страница более новая (временная метка), поэтому компиляция не выполняется, и страница не отражает ваше обновление.
- Вы расстраиваетесь, перезагружаете tomcat, который занимает 2 минуты.
- Вы исправляете еще одну ошибку на странице, теперь ее отметьте 10:07
- Tomcat подбирает его, компилирует его...
Кроме того, я считаю, что помню некоторую конфигурацию "Контекст", которая позволяет изменять поведение перевода jsp. Вы работаете над неизменным пакетом liferay/tomcat? То же самое происходит, когда вы работаете только на одной машине? То же самое происходит, когда вы берете новый пакет, распаковываете и повторяете?
Ответ 3
Используйте следующую строку в методе doView:
ABCUtil.clearCache()
а также может использовать <expiration-cache>0</expiration-cache>
в дескрипторе развертывания портлета.
Ответ 4
Я нашел решение использовать MultiVMPoolUtil.clear();
Ответ 5
Одна из вещей, которая имеет тенденцию испортить перезагрузку JSP, - это разница в часовом поясе, которая вызывает эффект, подобный описанному Олафом Коком. Обычно вы можете обнаружить это в файлах журнала, так как он скажет что-то вроде "XXX был изменен в будущем".
Из-за этих временных отметок новый файл не будет правильно обнаружен и использован. Это можно легко решить, изменив часовой пояс в файле setenv.bat/setenv.sh Tomcat на соответствующее значение.
Ответ 6
Почему вы перезапускаете tomcat. Просто разверните портлет в каталог развертывания. Это быстрее.
И если вы запустите Liferay из Eclipse IDE, я думаю, что изменения автоматически подбираются.
Ответ 7
Моя проблема заключалась в том, что развертывание не было исправлением изменений, внесенных в javascript-источник.
Создать файл с именем:
portal-ext.properties
В частности, в каталоге:
C:\liferay-portal-6.2-ce-ga4\jboss-7.1.1\standalone\deployments\ROOT.war\WEB-INF\classes\
С контентом:
com.liferay.portal.servlet.filters.cache.CacheFilter=false
Другие проблемы, которые у меня были:
Краткосрочные файлы файловой системы Windows не могут размещать длинные имена файлов/путей JBoss в каталоге tmp.
Развертывания были кешируемыми файлами, которые я удалил
Созданы файлы кэширования, которые я удалил
Строки в моем файле bat для сборки и развертывания:
rd /q /s \liferay-portal-6.2-ce-ga4\jboss-7.1.1\standalone\tmp\work\jboss.web\default-host\my-portlet
rd /q /s \liferay-portal-6.2-ce-ga4\jboss-7.1.1\standalone\deployments\my-portlet.war
rd /q /s \liferay-portal-6.2-ce-ga4\liferay-plugins-sdk-6.2\portlets\my-portlet\docroot\WEB-INF\classes
ant.bat