首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何加快网页加载时间(CRON?在后台加载API调用?)

问如何加快网页加载时间(CRON?在后台加载API调用?)
EN

Stack Overflow用户
提问于 2017-06-17 05:20:53
回答 3查看 290关注 0票数 0

我为自己做了一个门户页面,在每次加载时调用第三方(天气) API (见截图)。这种第三方API有时需要10秒才能返回数据,从而导致页面加载速度慢得无法接受。

因此,我考虑每隔10-15m运行一次CRON作业,以获取数据并将其缓存到本地。然而,这并不是一个理想的解决方案,因为它给API提供者带来了比必要的更多的压力。如果可能的话,我个人也不喜欢使用CRON作业。

我能想到的唯一其他解决方案是以某种方式在后台加载API数据,从而允许页面的其余部分在我等待天气数据从API提供程序返回的同时加载。我甚至不确定要搜索什么才能了解如何做到这一点。

Q1。这种“后台加载”编程“技术”叫什么?给我找点东西吧。

Q2。您还能想到加载/缓存API数据的其他选择吗?我认为CRON工作或"JS技术“是我唯一的选择,但我已经离开了一段时间。

​

​

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-06-17 05:30:47

您希望查看跨域的异步AJAX调用--这就是名称。

为了进行跨域调用,您的服务器上应该有一个PHP包装器/代理文件,您可以从JavaScript调用它。

PHP中的代理文件调用API端点并返回一些JSON。

因此,当用户加载您的页面时,在加载HTML DOM之后,JavaScript代码将在后台调用您的代理,然后在下载数据时更新HTML元素。

票数 1
EN

Stack Overflow用户

发布于 2017-06-17 05:35:47

Q1:称为AJAX ("Asynchronous Javascript and XML")或XHR ("XMLHttpRequest")。加载您的基本页面,并在应该放置天气信息的位置放置一个占位符,然后使用javascript在后台调用PHP页面,该页面将获取API结果并返回天气信息,然后您可以在占位符的位置显示天气信息。

Q2:研究像memcached或类似的缓存解决方案(因为这是您自己的门户,这可能是一个很好的学习体验,或者您可以为像这样相对简单的东西推出自己的解决方案)。当PHP代码需要天气信息时,它首先在缓存中查找,看看是否已经有天气信息,以及这些信息有多长时间。如果它不存在或太旧(例如> 15分钟),它会调用第三方API并更新缓存中的信息。

您可以结合使用这两种技术来加快AJAX请求的速度,也可以使用cronjob更新缓存。

票数 1
EN

Stack Overflow用户

发布于 2017-06-17 05:48:27

Q1:就像前面提到的!一个访问者总是一个糟糕的访问者,他会延迟细节,但所有其他访问者都会延迟,直到缓存过期。我会检查诸如"php后台处理“和”缓存“之类的关键字,或者类似于提到的:”预取“,但”缓存“更有帮助,但也有更多的结果需要过滤。

Q2:取决于你的意愿。始终保持最新状态?每个用户?每次都是吗?

由于请求限制:一个用户必须等待(直到ajax请求完成)。其他用户使用缓存对我来说是一个很好的选择。

其他选项:如果没有用户访问。然后,您可以在后台捕获下一个时间间隔的api,以直接显示新值:)

所以: cron可以每隔5分钟运行一次。但是,如果缓存未过期,您可以检查是否必须请求API。

Kind谈弗洛里安

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44598184

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档