問題
- サイトのページ数が多い場合、「このサイトのページへのリンク」ページを作成し、「選択」をクリックすると、ポップアップウィンドウのロード時間が長くなります。
- 再現する:
- ページ数が非常に多いサイトの場合(テストでは14000ページ)
-
Site Builder --> Pages --> にアクセスし、「このサイトのページへのリンク」ページを作成する。
-
作成したページの「選択」ボタンをクリックします。
-
ポップアップを見る。
- 実際の結果ページの表示に時間がかかる(私の場合、約10秒かかった)。
-
期待される結果ポップアップはすぐにページを表示するはずです。
環境
- DXP 7.3+
解像度
-
これは意図しない動作であり、以下のチケットで報告され、対処されています:
- 上記のLPSチケットを含むHotfixをリクエストするには、ヘルプセンターのチケットを開いてください。
追加情報
- バニラ・インスタンスでこの動作をテストしたい場合は、以下のスクリプトを使ってページを生成することができる:
-
System --> Server Administration --> Scriptに移動して、以下のスクリプトを実行し、約14000ページを生成する:
-
import com.liferay.petra.string.StringPool; import com.liferay.portal.kernel.log.Log; import com.liferay.portal.kernel.log.LogFactoryUtil; import com.liferay.portal.kernel.model.Group; import com.liferay.portal.kernel.model.Layout; import com.liferay.portal.kernel.model.LayoutConstants; import com.liferay.portal.kernel.service.GroupLocalServiceUtil; import com.liferay.portal.kernel.service.LayoutLocalServiceUtil; import com.liferay.portal.kernel.service.ServiceContext; import com.liferay.portal.kernel.service.ServiceContextThreadLocal; public class LayoutGenerator { def chars = ['a','b','c','d','e','f','g','h','i','j','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'] as char[]; public void execute() { try { ServiceContext serviceContext = ServiceContextThreadLocal.getServiceContext(); Group group = GroupLocalServiceUtil.fetchFriendlyURLGroup(serviceContext.getCompanyId(), "/myportal"); if ( group!=null ) { generateLayouts("pagin", 0, 4, 11 , group, serviceContext); } else { log.info("NO GROUP FOUND"); } } catch (Throwable e) { log.error(e.getMessage(), e); } finally { } } public void generateLayouts(String name, long parentLayoutId, int level, int count, Group group, ServiceContext serviceContext) { try { if ( level<= 0) { return; } if ( count > chars.length ) { count = chars.length; } long userId = serviceContext.getUserId(); long groupId = group.getGroupId(); boolean isPrivateLayout = false; String title = ""; String description = ""; String type = LayoutConstants.TYPE_PORTLET; boolean isHidden = false; String friendlyURL = StringPool.BLANK; for (int i = 0; i < count; i++) { try { String realName = name.concat(String.valueOf(chars[i])); Layout layout = LayoutLocalServiceUtil.addLayout( userId, groupId, isPrivateLayout, parentLayoutId, realName, title, description, type, isHidden, friendlyURL, serviceContext); log.info(realName); generateLayouts(realName, layout.getLayoutId(),(level-1), count, group, serviceContext); } catch (Exception e) { throw e; } } } catch (Throwable e) { log.error(e.getMessage(), e); } finally { } } Log log = LogFactoryUtil.getLog("LayoutGenerator"); } (new LayoutGenerator()).execute();
-