【发布时间】:2019-03-16 23:32:09
【问题描述】:
我正在构建一个 Web 应用程序(带有 SQL Server 数据库的 ColdFusion 网站),该应用程序需要显示驻留在外部源上并可通过 API 获得的数据。一些数据是“静态的”,一旦它存在,它就不会改变。但是,每天都会添加新数据。例如,假设数据代表“出货量”。昨天的货物已发货,其中包含的数据将不会改变。然而,今天将创造更多的出货量。我不想在每次需要历史数据时调用 API(比如说,对于按需报告),我想保存或缓存 API 响应中的相关数据,以便我可以更快地请求它。
我最初的想法是编写一个单独的 ColdFusion 脚本,每天向 API 发出请求,检索前几天的发货,解析响应中的数据并将其保存到 SQL Server 数据库。
有没有更有效的方法来做到这一点,也许直接从 SQL Server 数据库调用 API 来导入数据?
【问题讨论】:
-
这个 API 是否被频繁调用以至于需要缓存?是否有很多处理导致此 API 变慢?数据请求是否可以在 SQL 服务器上处理并仅提供给 CF API?也许在 SQL 服务器上有一个包含您需要的数据的报表?然后直接查询那个表。
-
对于临时缓存以提高性能并减少对 APi 的调用,您可以使用 memcached 或 redis 等。如果您在 AWS 上,我会在 ElasticCache 上使用 Memcached,它非常易于设置。
-
@Shawn,是的,现在他的 API 被频繁调用以支持面向 Web 的报告。 API 本身并不慢,但有时数据量很大,因此解析、处理和过滤数据会占用大量资源并花费大量时间。 SQL Server 数据库中尚不存在相关数据。我正在考虑复制那里的数据以使查询更容易。我正在寻找一种有效的方法来做到这一点。
-
@Redtopia 谢谢你,我将不得不在互联网上找到这个并了解更多信息。
-
我生成了一个唯一的密钥,然后使用 CacheGet() 和 CachePut() 在定义的时间段内存储 API 响应。 (如果 CacheGet() = NULL,则执行新的 API 请求,并使用 CachePut() 缓存数据以临时存储它。)
标签: sql-server api coldfusion