输入框中的 SAP UI5 Live Search 导致 SAP BTP 上的应用程序内存不足

问题描述 投票:0回答:1

我在 SAP BTP Cloud Foundry 上部署了一个 MTA 应用程序,其中 UI5 作为模块之一,服务层应用程序作为另一个模块。两者的类型都是nodejs。 250 mb 内存分配给 UI5 模块,500 mb 内存分配给服务模块。

ui 应用程序有一个 SearchField,可以使用其 liveChange 事件和 OData 绑定来实现实时搜索,如下所示。

```
var oList = this.getView().byId("idObjects");
var oBinding = oList.getBinding("items");
let filter = new Filter({
path: path,
operator: FilterOperator.Contains,
value1: value,
caseSensitive: false
});
oBinding.filter(filter);
```

对于在搜索字段中输入的每个字符,OData 批量请求将发送到服务层,如果立即在搜索字段中输入/输入下一个字符,则最终该请求将被取消。仅处理最后一个请求,不取消。

搜索字段的长度为 256 个字符。如果用户输入 256 个 OData 请求中的 256 个字符,则第 255 个 OData 请求将被取消,第 256 个将执行搜索/过滤工作。

这里的问题是,当在搜索字段中输入所有 256 个字符(通过连续按键)时,UI 应用程序和服务模块都会因内存不足而崩溃。即使最初的 255 个请求被客户端取消,服务层也会收到它并开始处理。

我在这里没有得到任何内存泄漏的线索,因为实时搜索仅由 OData 处理。

如果我用搜索事件替换 liveChange 事件,那么它看起来很完美,因为单击搜索图标时它只会触发一个请求。

有什么方法可以通过 liveChange 解决 OOM 问题吗?

问候, 拉文德拉

sapui5 cloud-foundry
1个回答
0
投票

您真的需要这里的 liveChange 事件吗?如果您的用户最多可以输入 256 个字符,那么用户在收到合理数量的响应之前必须输入的最小字符数是多少?也许将事件限制为仅在达到特定输入长度后触发,或者将其完全更改为更改/提交事件将解决您的问题。否则,您的输入字段当前的行为符合预期。

© www.soinside.com 2019 - 2024. All rights reserved.