3

我正在开发一个从 Amazon.com 和 Walmart 提取产品价格数据的网站。我猜在未来,它还会从其他地方拉取数据。

我的第一个想法是直接从亚马逊提取数据(使用他们的产品广告 API),然后在网站上为每个登陆页面的访问者显示数据。如果我要检索的产品价格不多(或者如果网站访问者的数量很少),这不是一个坏主意。我认为一旦网站变得繁忙并且如果我增加我想要拉的价格的产品数量,我会遇到问题。

使用 Amazon 和 Walmart API,我能够成功地进行 REST api 调用并解析返回的 XML 以获得我需要的信息。

将这些信息存储在本地数据库中是否有意义,例如每 1-5 分钟更新一次,然后让网站访问者从我的本地数据库中提取定价信息,而不是向亚马逊和沃尔玛进行 API 调用?

如果我确实走这条路并创建了一个使用亚马逊和沃尔玛 API 来提取价格数据的函数,那么我如何在后台每 1 到 5 分钟自动运行这个函数,24/7/365?

4

2 回答 2

2

将这些信息存储在本地数据库中是否有意义

是的。实际上,这听起来就像一个典型的缓存设置。我建议研究 Redis 而不是为此使用关系数据库。

然后如何在后台每 1 到 5 分钟自动运行一次此功能

可能是Cron工作。您必须提供更多信息,例如您的应用程序在哪里运行(AWS EC2 或其他地方?),以及它是在 Linux 还是 Windows 上运行,然后我才能给出更详细的建议。

于 2015-12-28T19:52:09.990 回答
1

这取决于您的负载和缓存命中 - 例如,如果您每天只有 100 位访问者访问几个产品页面 - 无需每分钟更新 1000 多个位置,甚至可能不需要存储任何内容。

但是,如果您的访问者经常查看相同的页面 - 那么缓存将很有用。

然后是不同的策略:

  • 预填充缓存(您提到的那个) - 提前获取所有数据并通过 cron 作业或专用守护程序不断更新。这会稍微加快第一个访问者的页面加载速度,但带宽最昂贵。
  • 按需缓存 - 从空缓存开始,仅在第一次请求时获取数据(或当请求为过期数据提供服务时),第一次请求会更慢,但这确保只请求和缓存所需的数据。
  • 以上组合:例如在第一次请求时获取,然后在后台作业中更新
于 2015-12-28T19:55:30.467 回答