docs/docs/cn/tutorials/v1/22-deploy-faster.md
很多朋友在部署 NocoBase 时可能会觉得访问速度不够理想。这通常是由于网络环境、服务器配置或部署架构的影响所致。在开始介绍优化技巧前,我先展示一下正常配置下的 NocoBase 访问速度参考,避免不必要的担忧。
以下是在 NocoBase demo 环境中测试的加载速度:
接下来,我将分享一系列简单但高效的部署优化技巧,这些方法无需修改代码,只需调整部署设置,就能显著提升访问速度:
【前提条件】
【提示】
传统的 HTTP/1.1 协议在处理多个请求时会有限制——通常只能同时处理 6-8 个连接,这就像排队买票一样,容易造成延迟。
HTTP/2 采用了"多路复用"技术,可以同时处理多个请求,大大加速了资源加载;而最新的 HTTP/3 在不稳定网络中表现更佳,效果也很棒。
【优化建议】
http2 参数即可:listen 443 ssl http2;
【验证】
浏览器开发者面板,打开"网络"选项,鼠标右键勾选"协议",即可看到当前连接的协议版本:
经过我们实测,整体速度提升约10%,在系统中大量区块和资源的情况下,性能提升更明显。
【提示】
就像高速公路会比低速公路更顺畅一样,带宽决定了数据传输的效率。当 NocoBase 首次加载时需要下载大量前端资源,如果带宽不足,就容易形成瓶颈。
【优化建议】
【提示】
延迟其实就是数据传输的等待时间。即便带宽充足,如果服务器离用户太远(比如用户在中国,而服务器在美国),每次请求响应都可能因为距离遥远而拖慢速度。
【优化建议】
【验证】
通过ping命令,测试不同地区服务器的延迟。 这个方式提升最为明显,根据不同地区,访问速度提升1-3倍以上。 跨12个时区,13秒:
跨2个时区,8秒:
当前地区,约3秒:
【前提条件】
【提示】
当用户访问 NocoBase 时,请求会直接到达您的服务器。合适的部署方式能让服务器更高效地处理请求,从而提供更快的响应。
【不同方案及建议】
启动 NocoBase 后,不使用反向代理静态资源(不推荐):
参考"安装文档"
不使用反向代理,首页加载约为6.1秒
使用 Nginx / Caddy 等反向代理(强烈推荐):
参考"部署文档"
使用Nginx代理后,首页加载约为3-4秒
使用集群部署与负载均衡(适合高并发及高可用场景):
【前提条件】
【提示】
CDN(内容分发网络)将您的静态资源缓存到全球各地的节点,用户可以从最近的节点获取资源,就像就近取水一样,能极大降低加载延迟。
此外,CDN 最大的优势在于能够显著减轻应用服务器的负载和带宽压力。当大量用户同时访问 NocoBase 时,如果没有 CDN,所有的静态资源请求(如 JavaScript、CSS、图片等)都将直接访问您的服务器,可能导致服务器带宽不足、性能下降,甚至宕机。通过 CDN 分流这些请求,您的服务器可以专注于处理核心业务逻辑,为用户提供更稳定的体验。
【优化建议】• 配置您的服务器,让静态资源请求通过 CDN 分发;• 根据用户所在地选择合适的 CDN 服务商:
# 将静态资源重定向到 CDN 域名
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot)$ {
rewrite ^(.*)$ https://your-cdn-domain.com$1 permanent;
}
对于小型项目,Cloudflare 免费版也能提供不错的 CDN 加速效果:
特别提示:即使您的用户群都在同一地区,仍然强烈建议使用 CDN,因为它能有效减轻服务器负担,提高系统整体稳定性,尤其是在访问量大的情况下。
【前提条件】
【提示】
通过启用压缩和合理的缓存策略,可以显著减少数据传输量和重复请求,相当于给您的资源做"瘦身"处理,让加载速度飞起来。
【优化建议】
# 启用 Gzip 压缩
gzip on;
gzip_comp_level 6;
gzip_min_length 1000;
gzip_proxied any;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
# 如果支持 Brotli 压缩,可启用以获得更高效的压缩效果
brotli on;
brotli_comp_level 6;
brotli_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
• 为静态资源设置合适的缓存头,减少重复加载:
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
expires 30d;
add_header Cache-Control "public, max-age=2592000";
access_log off;
}
【前提条件】
【提示】
安全总是第一位的,但 HTTPS 的配置如果不当,也可能增加一些延迟。这里有一些优化的小技巧,可以帮助您在确保安全的同时,又能保持高效性能。
【优化建议】
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305;
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
【跨国场景优化效果】 特别说明:以下是在跨国/跨12个时区场景下的优化效果,这与前面提到的本地访问场景(约3秒)有本质区别。地理距离造成的网络延迟是不可避免的,但通过优化仍能显著提升速度:
综合应用 Http2 + CDN缓存 + Gzip压缩 + Brotli压缩后: 优化前(跨国访问),13秒: 优化后(跨国访问),8秒:
这个例子说明,即使在地理位置相距遥远的情况下,合理的优化措施仍然能将加载时间缩短约40%,大幅改善用户体验。
【前提条件】
【提示】
如果不知道哪里成为了瓶颈,就很难精确地进行优化。建议使用一些免费工具来监控网站性能,帮助大家找到问题所在。
【优化建议】
使用如下免费工具检查网站性能:
关注以下关键指标:
常见问题应对:
下面这份清单可以帮助大家快速检查和优化 NocoBase 的部署:
HTTP 版本检查
带宽评估
服务器位置选择
部署架构
CDN 实施
压缩与缓存
SSL/TLS 优化
性能监控
【问】我的服务器部署在海外,中国用户访问速度缓慢,该怎么办呢?
【答】最好的办法是选择中国区域内的云服务器重新部署。如果实在无法更换,也可以:
【问】为什么我的 NocoBase 首次加载很慢,而之后却很快?
【答】首次加载慢比较正常,因为首次需要下载大量资源,以我们的官方 Demo 为例,通常首次加载时间为3秒左右。
后续日常输入网址、进入应用的速度约为1-2秒,而应用内切换页面的速度约为50-300毫秒,延迟很低。
对于加载时间过长的情况,仍有优化空间:
【问】我目前使用虚拟主机,无法修改 Nginx 配置怎么办?
【答】在此情况下,虽然优化选项较少,但仍建议:
通过这些简单而实用的部署优化策略,您可以显著提升 NocoBase 的访问速度,给用户带来更流畅的体验。很多优化措施只需在几小时内完成设置,无需改动代码,轻轻松松就能见到效果。