API 开发 - 使用 SQL 连接或缓存表?

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

这是一个理论问题;我和我的同事讨论了这个问题,所以我也想听听你的想法。

背景:我们想要开发一个基于网络的票务系统。

因此,将会有大量的工单对象和可能不同的不同参数。例如,一张票将有一个类别、优先级、客户、用户等。

这些工单参数大多数时候都是很短的列表,例如有 15 个类别、5 个优先级等等。

我们希望使用 Microsoft SQL Server、C# Web API 和 Vue.js 作为前端。

例如,如果我想获得所有当前打开的票证的列表:

我的同事说,以下是最简单的方法: 将 SQL 中所有必需的表连接到一个视图中,并将它们解析为从 API 到 vue.js 的一个大型 JSON 数组。

但我说可能存在性能问题,最好对所有类别进行一次查询,对所有优先级等进行一次查询并保存/缓存它们,然后仅检索原始票证数据并使用缓存的值进行显示。我认为在大型 JSON 中传输所有显示的值会导致过热,而且没有必要。例如,随着数据可能增长,它会发送类别名称“用户管理”500 次,而不是仅发送 id。

您是否认为这有很大的性能问题,或者情况并非如此,因为所有 JSON 都以文本形式传输,因此无论是 int 还是 string 都没有关系。

感谢您的投入!

sql vue.js api join caching
1个回答
0
投票

大有效载荷就是大有效载荷。您可以进行无限滚动,这样您一次只能加载 20 张票之类的。如果您需要搜索,您可以拥有一些已预先缓存的高级功能,例如 Solr/Elasticsearch/Algolia。

还取决于每张票证中 DOM 元素的数量,但是,可能会出现性能问题,尤其是在中端移动设备上。

您可能也需要从头开始构建它,这一事实可能会很繁重,提前渲染一些内容(如果可能的话),这样您只需要显示 HTML 也可能有助于提高性能,因为您将跳过 JSON开销(又名:使用直接的 HTML 在用户设备上更轻)。

您甚至可以使用像MarkoJS这样的工具,这样您就可以更快地获得它,例如借助渐进式渲染。

所以总的来说,可以做很多事情来优化性能。这完全取决于您的技能/带宽和限制。
如果对于其他优先事项来说并不重要,那么加载时间缓慢也可能没问题。但这更多的是内部决定。

TLDR:是的,如果可以的话,为您的用户进行优化。

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