使用 nginx 提供静态网站服务。响应时间超过 600 毫秒。出了什么问题?

使用 nginx 提供静态网站服务。响应时间超过 600 毫秒。出了什么问题?

我使用 nginx http 缓存了一个 wordpress 博客,超过 99% 的请求缓存了该博客,缓存寿命为 2 天。下面是网站的网页。网页包含大量图片,因此加载延迟。页面平均大小仅为 1 mb。

响应大小中位数为 10 KB

在此处输入图片描述

使用 speedcurve,我的 TTFB 中值为 0.6 秒

在此处输入图片描述

为什么这么高?

我支持 cloudflare,并且所有静态资产(例如 JS、CSS 和图像)均由 cloudflare 进行版本控制和缓存。

我的 nginx 配置有

    sendfile        on;
    # https://forum.nginx.org/read.php?2,280434,280434#msg-280434
    tcp_nopush on;
    tcp_nodelay on;

    #https://support.cloudflare.com/hc/en-us/articles/212794707-General-Best-Practices-for-Load-Balancing-at-your-origin-with-Cloudflare
    #https://www.nginx.com/blog/tuning-nginx/
    keepalive_timeout  300s;
    keepalive_requests 10000;

我也有

initcwnd 设置为 10,initrwnd 设置为 10,ipv4.tcp_slow_start_after_idle=0

以下是 cloudflare 报告的从 CF 到原点的响应时间 在此处输入图片描述

这是我的2G 连接的 Web 页面测试结果

在此处输入图片描述

静态网站也是在两台机器上实现负载平衡。一个在弗里蒙特,一个在孟买,使用 Cloudflare 进行地理路由。

为什么我的 TTFB 这么长?我该怎么做才能缩短它?

在此处输入图片描述

答案1

从孟买重新进行测试没有带宽限制,页面的 TTFB 为 237ms,静态资源的 TTFB 为 7ms。

您将测试限制为 2G,这是非常低的带宽。

所以问题不在于网站,而在于你对测试设置的限制。

答案2

跳过 Cloudflare 后,您是否会得到相同的结果?在本地执行时如何ab?即使连接很稳定,我的 TTFB 也只有约 200ms。可能只是在 Cloudflare 边缘和您的源之间进行连接,由于距离的原因,就需要这么多时间。

您可以打开全页缓存,这将立即改善您的 TTFB。

相关内容