我尝试构建具有最佳性能的Angular应用。
这个程序很简单:
一个页眉(带有两个链接),一个页脚,主页和“关于”页面。
该应用程序可用here
我使用Chrome的LightHouse查看指标。
使用默认指标:
Device: Mobile
Audits: All
Throttling: Simulated Slow 4G, 4X CPU Slowdown
Clear Storage
在此之后,我使用Nginx代理通过gzip提供所有资产。
gzip on;
gzip_vary on;
gzip_proxied any;
gzip_types text/plain application/json text/xml text/css text/js text/javascript application/javascript image/svg+xml;
gzip_min_length 1000;
当然,这还不错,但是我想看看Angular是否有可能将“第一输入延迟”控制在100ms以下。
如果我删除了clear storage参数,那么我在下面。
如果我不输入任何节流参数,那么我会在下面。
但是我想使用这些参数将其设置为 100ms以下。 因此,当我在生产环境中构建产品时,可能会错过一些参数,该项目基于Angular SSR hero app。
我看到,当我呈现不带JS文件的网站时,只要没有javascript交互并且我在“首次输入”交互中的时间为20毫秒,它就可以正常工作,因此也许有一种方法可以不同地加载JS脚本。超时时间大于等于1500ms,但这不是一个好习惯。
我想知道Angular SSR是否可以在<100ms的首次输入时间延迟内渲染,或者该堆栈实际上无法实现。
我了解LightHouse审核是基于您的计算机性能。使用Pagespeed insight可获得几乎相同的结果,但由于服务器性能较弱,因此速度索引和第一时间已到。
Github项目:https://github.com/mlescaudron/angular-app-optimized
如果要在本地对其进行测试,请输入以下命令:
# Docker config for nginx with gzip compression
docker run -d --name web-server --network=host nginx:1.17.3-alpine
docker cp nginx.conf web-server:/etc/nginx/nginx.conf
docker exec -ti web-server nginx -s reload
# Build and run the SSR app
yarn
yarn build:ssr && yarn serve:ssr
# Access it at http://localhost