首页 > 解决方案 > MockServer:如何避免加载所有实体集?

问题描述

我使用/V2/Northwind/Northwind.svc作为模拟服务来构建示例 Fiori 应用程序。

我正在使用模拟服务器来模拟 OData 服务。

在此处输入图像描述

每次刷新浏览器时,至少需要 30 秒才能加载 OData 服务。

在此处输入图像描述

正如您在图片中看到的,它尝试加载大量数据。问题是,如何在后台加载所有这些数据,或者是否有其他机会来改善加载时间?

标签: sapui5

解决方案


当模拟服务器启动时,..

  1. 同步获取服务元数据( metadata.xml) 。源代码
  2. 然后分析元数据以确定在那里定义了哪些实体集。
  3. 然后它尝试从文件夹中获取所有实体集mockdata,再次,同步/顺序地一个接一个。源代码

如您所见,这会大大减慢加载过程。

为了仅模拟某些实体集,您可以将在 in 元数据中定义的名称分配给<EntitySet>设置<EntityContainer>映射中的属性aEntitySetsNamesAPIsimulate

myMockServer.simulate("...", {
  sMockdataBaseUrl: "...",
  aEntitySetsNames: [ // Load only Suppliers.json and Products.json
    "Suppliers",
    "Products"
  ]
});

aEntitySetsNames:
要获取的实体集名称列表。如果有很多实体集但只需要获取少数实体集,则应使用此参数来提高性能。默认值为空 - 在这种情况下,将检索所有实体集。


如果有人感兴趣,这是我并行和异步加载元数据以及所有实体集的实验:https ://embed.plnkr.co/F3t6gI8TPUZwCOnA/


推荐阅读