Stripe API 列出发票的速度非常慢

Pet*_*dam 2 php laravel stripe-payments stripe-connect

我正在构建 Stripe SaaS ,它检索注册用户的所有发票并进行一些统计

我的服务器位于 Godaddy 共享服务器上,内存为 512mb,页面加载时间可能需要 20 秒,如果用户有 50 张发票,这对性能来说太糟糕了

我正在使用 Laravel 5.4 框架和 Stripe 包

这是我在控制器中的代码

    \Stripe\Stripe::setApiKey($secret_key);

    $invoices=  \Stripe\Invoice::all(array("limit" => 100));
Run Code Online (Sandbox Code Playgroud)

我的观点是

 @foreach($invoices->autoPagingIterator() as $invoice)
                                <tr>

                                <td>invoice.created</td>
                                    <td> {{$invoice->id}}</td>
                                    <td>{{$invoice->amount_due}}</td>
                                    <td> {{$invoice->attempt_count}}</td>
                                    <td> {{$invoice->livemode}}</td>
                                    <td> {{$invoice->charge}}</td>
                                    <td> {{$invoice->currency}}</td>
                                    <td> {{$invoice->customer}}</td>
                                    <td> {{$invoice->date}}</td>
                                    <td> {{$invoice->description}}</td>
                                    <td> {{$invoice->discount}}</td>
                                    <td> {{$invoice->ending_balance}}</td>
                                    <td> {{$invoice->period_end}}</td>
                                    <td> {{$invoice->period_start}}</td>
                                    <td> {{$invoice->subscription}}</td>
                                    <td> {{$invoice->paid}}</td>


                                </tr>
                                @endforeach
Run Code Online (Sandbox Code Playgroud)

逻辑是密钥存储在数据库中,每个用户都有自己的密钥我想知道这是在没有重负载的情况下进行 SaaS 的最佳实践

Sk4*_*446 5

Stripe 内置了速率限制,可防止您一次提取过多数据。

我们最近为客户构建了一个系统(我们使用 Stripe Connect,充当客户和企业之间的“中间人”,收取费用),该系统需要我们显示以前的发票。我们想出的唯一真正的方法是同步数据并保留本地副本。

这花了一周的时间来运行我们所有的旧数据,但现在可以通过可排队事件动态运行,在创建条带数据时处理拉取条带数据。

我的建议是设置一个队列,将所有发票数据拉到您自己的数据库中,然后您可以在其中格式化和显示,而不会出现明显的加载延迟。将其与查询缓存和索引结合起来,您应该可以以较低的服务器开销实现相当快的设置。

作为旁注,我还建议寻找比共享托管更好的托管选项,因为在如此有限的环境中尝试执行队列和计划等操作时会遇到很多问题。从长远来看,简单的 DigitalOcean 或 Linode 盒子与 Laravel Forge 相结合使得 Laravel 的特定部署和管理变得更加容易。