問題
- DXP 管理者とユーザーは、ポータルのページをナビゲートしているときに、URL に追加された
zx=
パラメータに気付く場合があります。 例: http://localhost:8080/web/guest/page2?zx=5ml8zs91pgxm
Environment
- Liferay DXP 7.0+
解決策
- 現在の動作は IE11 で想定されています
zx
パラメータは、 自動シングル ページ アプリケーション (今後は SPA) によって追加され、URL を一意にしてキャッシュを防止します。
-
javascript.single.page.application.enabled=false
in portal-ext.properties を介してポータルでグローバルに SPA を無効にすることが可能な回避策ですが、一般的なページに影響を与える可能性があるため、この戦略はお勧めしません。積載性能。
- より良いアプローチは、 IE11 のみで SPA を無効にすることです。: これは次のように実行できます。
-
- Liferay DXP 7.3、DXP 7.2 および DXP 7.1: コントロール パネル > 構成 > システム設定 > プラットフォーム > インフラストラクチャ > フロントエンド SPA インフラストラクチャ
- Liferay 7.0 DXP: コントロール パネル > 構成 > システム設定 > Foundation > フロントエンド SPA インフラストラクチャ
-
この変更は他のブラウザーには影響せず、IE11 と SPA の既知のパフォーマンスの問題も軽減します: Internet Explorer 11 のメモリ リーク.
- または、この動作が存在しない新しい MS Chromium Edge (例: Edge バージョン 87.0.664.75) を使用することもできます。
追加情報
-
Internet-Explorer-Support-Policy
- IE11 では、
httpMethod
GET
の場合、senna.js /metal-uri
URL の末尾にzx
パラメータを追加して、キャッシュを回避するために URI を一意にします。 https://github.com/liferay/senna.js/blob/master/src/screen/RequestScreen.js#L120-L122:
formatLoadPath(path) {
以下、 https://github.com/metal/metal-plugins/blob/master/packages/metal-uri/src/Uri.js#L274-L277 の
var uri = new Uri(path);
uri.setHostname(globals.window.location.hostname);
uri.setProtocol(globals.window.location.protocol);
if (globals.window.location.port) {
uri.setPort(globals.window.location.port);
}
if (utils.isIeOrEdge() && this.httpMethod === RequestScreen.GET) {
return uri.makeUnique().toString();
}
return uri.toString();
}metal-uri
パッケージ内のmakeUnique
関数:
makeUnique() {
https://github.com/metal/metal-plugins/blob/master/packages/metal-uri/src/Uri.js#L498では、
this.setParameterValue(Uri.RANDOM_PARAM, string.getRandomString());
return this;
}Uri.RANDOM_PARAM
値はzx
になります。
Uri.RANDOM_PARAM = 'zx';