我使用 Windows 10 (WSL 2)。我的硬件是:
Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz 2.60 GHz RAM 8.00GB SSD
实际上,如果您有兴趣,这是一台游戏笔记本电脑(MSI GL 65 95CK)。
我决定安装 Laravel,查看文档并实施描述的步骤:
- 在 WSL 终端中(我使用 Ubuntu)
curl -s "https://laravel.build/example-app?with=mysql,redis" | bash
cd example-app && /vendor/bin/sail up
我打开浏览器,发现主页花了将近 1 秒的时间来渲染!有时甚至两秒钟!
我想,“好吧,也许框架处于未优化模式。调试等”,并决定转为APP_DEBUG
. 我还删除了所有路由并改为:.env
false
Route::get('/', [\App\Http\Controllers\TestController::class, 'test']);
在此之前,我创建了TestController
:
class TestController extends Controller
{
public function test() {
return response()->json([
'name' => 'Abigail',
'state' => 'CA',
]);
}
}
然后我运行php artisan optimaze
,在浏览器中打开http://localhost/api
结果是一个很大的悲伤:
为什么是 800 毫秒?我什么也没有做过。好的,我决定只是重命名index.php
文件public
夹中的文件index2
,例如,放置一个index.php
带有数组打印的新文件,只是为了测试这是 Laravel 问题还是这只是基础设施问题。
新index.php
:
好多了!然后我想,“让我们与另一个框架进行比较,例如 .NET Core”。我做了一个非常简单的 Web Api 项目。控制器:
namespace MockWebApi.Controllers
{
[ApiController]
[Route("")]
public class MainController : ControllerBase
{
[Route("test")]
public IActionResult Test()
{
return Ok(new
{
Test = "hello world!!!"
});
}
}
}
结果是:
好吧,你可以说这是一种编译语言。我决定检查 Node.js 和 Express:
代码:
router.get('/', function(req, res, next) {
res.json({"test": "123"})
});
结果:
如您所见,在这种情况下,Node 与 C# 一样快。
那么,Laravel 有什么问题呢?我在安装过程中遗漏了什么吗?
更新
我在没有 Sail 的情况下提出了 Laravel。我的码头工人撰写文件:
version: '3'
services:
php-fpm:
build:
context: docker/php-fpm
volumes:
- ./:/var/www
networks:
- internal
nginx:
build:
context: docker/nginx
volumes:
- ./:/var/www
ports:
- "80:80"
depends_on:
- php-fpm
networks:
- internal
networks:
internal:
driver: bridge
Nginx Docker 文件:
FROM nginx
ADD ./default.conf /etc/nginx/conf.d/default.conf
WORKDIR /var/www
Nginx 配置:
server {
listen 80;
index index.php;
server_name 127.0.0.1 localhost;
root /var/www/public;
location / {
try_files $uri /index.php?$args;
}
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass php-fpm:9000;
fastcgi_index index.php;
fastcgi_read_timeout 1000;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}
php-fpm Dockerfile:
FROM php:7.4-fpm
RUN apt-get update && apt-get install -y wget git unzip \
&& apt-get install libpq-dev -y
RUN wget https://getcomposer.org/installer -O - -q \
| php -- --install-dir=/bin --filename=composer --quiet
RUN groupadd -r -g 1000 developer && useradd -r -u 1000 -g developer developer
USER developer
WORKDIR /var/www
我没有得到任何性能改进(