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

时间:2017-06-16 21:20:53

标签: javascript php

我为自己创建了一个门户页面,在每次加载时调用第三方(天气)API(参见屏幕截图)。此第三方API有时最多需要10秒才能返回数据,导致页面加载速度慢得令人无法接受。

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

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

Q1。什么是“在后台加载”编程“技术”叫什么?给我一些东西来搜索。

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

biffbam

3 个答案:

答案 0 :(得分:1)

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

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

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

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

答案 1 :(得分:1)

Q1:这称为AJAX(“异步Javascript和XML”)或XHR(“XMLHttpRequest”)。加载基本页面并将占位符放在天气信息所在的位置,然后使用javascript在后台调用PHP页面来获取API结果并返回天气信息,然后您可以在占位符的位置显示。 / p>

Q2:查看memcached等类似的缓存解决方案(因为这是您自己的门户网站,可能是一次很好的学习体验,或者您可以为自己的解决方案提供相对简单的解决方案)。当您的PHP代码需要天气信息时,它首先会在缓存中查看它是否已有天气信息以及该信息的年龄。如果它不存在或太旧(例如> 15分钟),它会调用第三方API并更新缓存中的信息。

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

答案 2 :(得分:0)

Q1:就像提到的那样!一个访问者总是坏人,他们会在延迟到期之前将细节延迟,但所有其他人都会延迟。 我会检查关键字,如" php后台处理"和"缓存"或者像提到的那样:" prefetching"但是"缓存"更有帮助,但也有更多结果可以过滤。

Q2:根据你的意愿而言。总是最新的?每个用户?每一次?

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

其他选项:如果没有用户访问。那么你可以在下一个时间间隔中捕获api以直接显示新值:)

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

亲切的问候 弗洛里安