Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/425.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何加快网页加载时间(CRON?后台加载API调用?)_Javascript_Php - Fatal编程技术网

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

Javascript 如何加快网页加载时间(CRON?后台加载API调用?),javascript,php,Javascript,Php,我为自己制作了一个门户页面,在每次加载时调用第三方(天气)API(见屏幕截图)。此第三方API有时需要10秒才能返回数据,导致页面加载速度慢得令人无法接受 因此,我考虑每隔10-15米运行一次CRON作业,以获取数据并将其缓存到本地。然而,这不是一个理想的解决方案,因为它给API提供程序带来的压力超过了必要的程度。如果可能的话,我个人也不喜欢使用CRON作业 我能想到的唯一其他解决方案是在后台加载API数据,从而允许在我等待天气数据从API提供程序返回时加载页面的其余部分。我甚至不知道该找什么来

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

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

我能想到的唯一其他解决方案是在后台加载API数据,从而允许在我等待天气数据从API提供程序返回时加载页面的其余部分。我甚至不知道该找什么来学习如何做

问题1。“后台加载”编程技术叫什么?给我找点东西

问题2。您能想到加载/缓存API数据的其他选项吗?我认为CRON作业或“JS技术”是我唯一的选择,但我已经有一段时间没有参与其中了


您想看看跨域异步AJAX调用——这就是名称

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

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


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

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

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

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


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

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

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


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

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

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


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

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

问题2:取决于你的愿望。总是最新的吗?每个用户?每次

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

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

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

问候
弗洛里安:就像之前提到的那样!一个访问者总是会延迟获取详细信息,而所有其他访问者都会延迟获取详细信息,直到缓存过期。 我会检查诸如“php后台处理”和“缓存”之类的关键字,或者类似于前面提到的:“预取”但“缓存”更有用,但也需要过滤更多的结果

问题2:取决于你的愿望。总是最新的吗?每个用户?每次

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

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

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

问候
Florian

你要找的术语可能叫做“预取”?与API的所有者核实一下,有些人有使用协议,允许您在一小时左右的时间内多次访问他们的API。可能值得一看。1)在服务器端,它被称为“预取”或“缓存”