繁体   English   中英

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

[英]How to speed up web page load time (CRON? Load API call in background?)

我为自己创建了一个门户页面,该页面在每次加载时都会调用第三方(天气)API(请参见屏幕截图)。 第三方API有时最多需要10秒才能返回数据,从而导致页面加载速度过慢。

因此,我考虑过每10-15m运行一次CRON作业以获取数据并将其缓存在本地。 但是,这不是理想的解决方案,因为它给API提供程序带来了不必要的压力。 如果可能,我个人也不希望使用CRON作业。

我唯一想到的其他解决方案是以某种方式在后台加载API数据,从而允许在我等待天气数据从API提供者返回时加载页面的其余部分。 我什至不知道要搜索什么以了解如何执行此操作。

Q1。 所谓的“后台加载”编程“技术”是什么? 给我找些东西。

Q2。 您能想到其他用于加载/缓存API数据的选项吗? 我认为CRON工作或“ JS技术”是我唯一的选择,但我已经退出循环了一段时间。

比夫巴姆

您想要查看跨域异步AJAX调用-这就是名称。

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

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

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

Q1:称为AJAX (“异步Java语言和XML”)或XHR (“ XMLHttpRequest”)。 加载基本页面,并在天气信息应放置的地方放置一个占位符,然后使用javascript在后台调用PHP页面,以获取API结果并返回天气信息,然后可以在占位符的位置显示该信息。

问题2:研究诸如memcached类的缓存解决方案(因为这是您自己的门户网站,可能是一种不错的学习体验,或者您可以针对此类相对简单的事情推出自己的解决方案)。 当您的PHP代码需要天气信息时,它首先在缓存中查找是否已经有天气信息以及该信息的年代。 如果它不存在或太旧(例如> 15分钟),它将调用第三方API并更新缓存中的信息。

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

Q1:就像之前提到的! 一个访问者永远是糟糕的访问者,它延迟了详细信息,而其他所有访问者直到缓存过期为止。 我会检出诸如“ php后台处理”和“缓存”之类的关键字,或者像提到的那样:“预取”但“缓存”更有用,但也有更多要过滤的结果。

Q2:取决于您的意愿。 总是最新的吗? 每个用户? 每次?

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

其他选项:如果没有用户访问。 那么您可以在下一个间隔中捕获api的背景信息,以直接显示新值:)

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

亲切的问候弗洛里安

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM