使用来自外部源(Steam)的Web API时遇到一个小问题。我需要对API进行多次调用并获取其结果,这会极大地降低它的速度,导致我的应用程序加载很长时间。
我使用Laravel作为我的应用程序。我想到了缓存结果并在后台获取新内容时向用户显示缓存(旧)结果,这在下一页加载时可见。这个问题是我第一次如何提高页面加载的速度,因为我必须以某种方式获取数据。
除此之外,我不知道如何提高我的表现。任何建议将不胜感激!
答案 0 :(得分:3)
有很多方法可以解决这个问题,但如果目标是提高初始页面加载的速度,那么每个解决方案都将涉及使您的应用程序异步。
而不是等待第三方服务回复,dispatch a job来获取数据。然后,您可以使用your cache中的陈旧数据进行回复。如果缓存中没有数据,您可以向用户呈现加载消息,也可以同步调度作业,这将增加加载时间。
在客户端,您需要轮询新数据或use a websocket将数据推送到客户端。 websocket方法设置起来比较困难,但会导致对应用程序的请求减少,并为最终用户提供更快的响应。
根据您的具体用例,您可以进一步优化此方法。例如,如果您始终从第三方服务获取相同的数据集,则始终可以从缓存中提供数据并使用cron job刷新缓存。如果这是一个可行的解决方案,那么您不必担心调度作业或异步更新客户端。