我正在开发一个php页面,它基本上使用Harvest API连接到Harvest并获取一些信息。代码基本上返回Harvest中的所有用户对象,并计算每个用户的费用。加载大约需要50秒。请参阅下面的代码 -
<?php require_once( 'connection.php' );
$result= $api->getUsers();
$users=$result->data;
$range= Harvest_Range::lastMonth();
foreach($users as $key=>$value){
$user_id=$value->get("id");
$first_name=$value->get("first-name");
$last_name=$value->get('last-name');
$result_expenses=$api->getUserExpenses($user_id, $range);
$expenses_data=$result_expenses->data;
$total_cost=0;
foreach($expenses_data as $key=>$value){
if($value->get("is-locked")=="true"){
$total_cost=$total_cost+$value->get("total-cost");
}}
?>
<?php if($total_cost!=0){?>
<tbody>
<tr>
<td> <?php echo $first_name; echo " ".$last_name; ?> </td>
<td> $ <?php echo $total_cost; ?> </td>
</tr>
</tbody>
<?php }}?>
</table>
有没有办法让页面加载更快?
答案 0 :(得分:0)
您的页面很慢,因为您要为每个用户请求数据,一次一个。这意味着,当您获得更多用户时,您将不得不提出更多请求。更多请求意味着您的申请需要更长时间。
不幸的是,您似乎一次只能从一个用户请求数据:http://mdbitz.com/docs/harvest-api/
如果您能够在本地存储数据,则可以大大提高应用程序的速度。您可以将其存储在易于访问的任何位置,例如数据库,缓存甚至文本文件。然后,您需要确定从Harvest API更新本地副本以获取最新数据的频率。