今天我们很高兴地宣布,Octane 支持现已在 Laravel Vapor 中可用。速度提升简直令人难以置信,所以系好安全带,让我们深入了解细节。
如果您还没有听说过 Octane,它是一个 Laravel 库,它通过一次启动您的应用程序,将其保存在内存中,然后以超音速的速度向其提供请求,从而极大地提高了应用程序的性能。
现在,将 Octane 与 Vapor 的按需自动扩展相结合,您可以在任何规模下获得极快的加载时间。让我们看看在 Amazon 的 us-west-1
区域上使用 Vapor 项目的一些数字。此 Vapor 应用程序配置了 1024 MB 的 RAM 和一个 RDS MySQL 实例 (db.t2.micro),它具有 1 个 VCPU 和 1Gib 的 RAM。
首先,让我们看看从数据库获取用户的 API 端点。使用 Octane,此端点快了 7 倍,内存使用量减少了 44%:
# Before Vapor's Octane integration
Request Duration: 39.40 ms, Memory Used: 169 MB
Request Duration: 40.20 ms, Memory Used: 169 MB
Request Duration: 37.71 ms, Memory Used: 169 MB
Request Duration: 42.16 ms, Memory Used: 169 MB
Request Duration: 40.60 ms, Memory Used: 169 MB
Request Duration: 45.75 ms, Memory Used: 169 MB
# After Vapor's Octane integration
Request Duration: 6.78 ms, Memory Used: 112 MB
Request Duration: 6.64 ms, Memory Used: 112 MB
Request Duration: 6.67 ms, Memory Used: 112 MB
Request Duration: 6.38 ms, Memory Used: 112 MB
Request Duration: 6.75 ms, Memory Used: 112 MB
Request Duration: 6.47 ms, Memory Used: 112 MB
接下来,让我们看看渲染静态模板的“登录”路由。使用 Octane,此端点快了近 3 倍,内存使用量减少了 35%:
# Before Vapor's Octane integration
Request Duration: 11.32 ms, Memory Used: 165 MB
Request Duration: 11.35 ms, Memory Used: 165 MB
Request Duration: 11.29 ms, Memory Used: 165 MB
Request Duration: 11.29 ms, Memory Used: 165 MB
Request Duration: 11.36 ms, Memory Used: 165 MB
Request Duration: 11.43 ms, Memory Used: 165 MB
# After Vapor's Octane integration
Request Duration: 4.89 ms, Memory Used: 108 MB
Request Duration: 4.89 ms, Memory Used: 108 MB
Request Duration: 4.83 ms, Memory Used: 108 MB
Request Duration: 4.66 ms, Memory Used: 108 MB
Request Duration: 4.79 ms, Memory Used: 108 MB
Request Duration: 4.91 ms, Memory Used: 108 MB
如您所见,使用 Octane 可以减少请求持续时间和内存使用量。当然,由于 AWS 对 Lambda 应用了 1 毫秒的计费粒度,因此您将为 HTTP 函数支付更少的费用。
如何开始
首先,确保您使用的是最新版本的 Laravel、Vapor Core 和 Vapor CLI
- Laravel 框架:^8.62.0
- Vapor Cli:^1.26.0
- Vapor Core:^2.14.0
接下来,在您的 Vapor 项目中安装 Octane。Octane 可以通过 Composer 包管理器安装
composer require laravel/octane
安装 Octane 后,您可以执行 octane:install
Artisan 命令,该命令会将 Octane 的配置文件安装到您的应用程序中
php artisan octane:install
接下来,如果您之前在应用程序中没有尝试过 Octane,您可能需要在本地进行测试。当然,不要忘记查看重要的 Octane 文档 主题,例如 依赖注入 和 内存泄漏管理。
最后,您可以在应用程序的 vapor.yml
文件中设置 octane
配置选项,指示 Vapor 使用 Octane。
id: 1
name: my-application
environments:
staging:
memory: 1024
runtime: 'php-8.0:al2'
octane: true
此外,如果您的项目使用数据库,您可以使用 octane-database-session-persist
和 octane-database-session-ttl
选项指示 Octane 在请求之间重用数据库连接。
database: my-database
octane: true
octane-database-session-persist: true
octane-database-session-ttl: 10
octane-database-session-persist
选项表示数据库连接应该在请求之间持久化。此选项的主要目的是减少每次请求创建数据库连接所涉及的开销。octane-database-session-ttl
选项允许指定 Lambda 容器在未使用时应保持连接到数据库的时间(以秒为单位)。
我们建议您指定 octane-database-session-ttl
值;否则,Lambda 容器将一直保持连接到您的数据库,直到 Lambda 容器被销毁。这可能需要几分钟,并可能导致您的数据库因活动连接过多而不堪重负。
请查看 Vapor 的 Octane 集成文档 以了解更多详细信息。
结论
此外,我们要感谢 Aaron Francis,感谢他提出的建议和 最初的探索,使 Octane 能够在 Vapor 上运行。我们关心并研究社区提出的每一个建议。
我们希望您喜欢这个新功能。在 Laravel,我们致力于为您提供世界上最强大、最友好的 PHP 开发体验。如果您还没有尝试过 Vapor,现在是一个好时机!您今天就可以在:vapor.laravel.com 创建您的帐户。