AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 702214
Accepted
JayMcTee
JayMcTee
Asked: 2015-06-29 14:04:12 +0800 CST2015-06-29 14:04:12 +0800 CST 2015-06-29 14:04:12 +0800 CST

在 Nginx 上启用 SPDY 后文件下载异常缓慢

  • 772

一个简单的 WordPress 静态站点完全在 https 上运行。

Nginx conf在这里: http: //pastebin.com/BrP0LThT

之前/之后的唯一区别是:

listen       443 ssl;
listen       443 ssl spdy;

带有 SSL 的 Nginx 1.8.0,没有 SPDY:

来自 transitions.js 文件的响应:

HTTP/1.1 200 OK
Server: nginx/1.8.0
Date: Sun, 28 Jun 2015 18:13:30 GMT
Content-Type: application/javascript
Last-Modified: Wed, 03 Dec 2014 14:19:08 GMT
Transfer-Encoding: chunked
Connection: keep-alive
Vary: Accept-Encoding
ETag: W/"547f1bdc-5267"
Expires: Sun, 12 Jul 2015 18:13:30 GMT
Cache-Control: max-age=1209600
Content-Encoding: gzip

相同的服务器设置,使用 SPDY:

来自同一 js 文件的响应:

HTTP/1.1 200
cache-control: max-age=1209600
content-encoding: gzip
content-type: application/javascript
date: Sun, 28 Jun 2015 18:24:49 GMT
etag: W/"547f1bdc-5267"
expires: Sun, 12 Jul 2015 18:24:49 GMT
last-modified: Wed, 03 Dec 2014 14:19:08 GMT
server: nginx/1.8.0

请注意,一旦启用 SPDY,这些文件的服务器响应会有很大不同。

加载所有内容的总时间几乎完全相同。

预计它会从一个相当对角的瀑布变成一个笔直的垂直水滴,充分发挥多路复用的作用。

但是这些 js、css 和图像资产上的所有 TTFB 绿条都增加到大约 280 毫秒,内容下载时间的蓝条从几乎没有,每个都超过 1 秒。

详细看这里:

注意大约 280 毫秒的统一 TTFB 延迟

这一切都太统一了,不可能是巧合。

iptables 不建议任何节流。除了启用 SPDY 之外,nginx conf 中也没有任何变化。因为它是 nginx 1.8.0,所以也不是 tcp_nodelay 错误。我的 conf 文件或防火墙中没有特殊的限制配置。keepalive_timeout 为 75,其他 keepalive 选项为默认值。

我应该去哪里看?我可以尝试什么?可能是什么问题?

由于带宽可能是一个问题,现在多达 28 个资产同时下载,这是带宽利用率图表。繁忙的 JS 下载发生在 0.7s 和 2s 之间。除非出现奇怪的下降,带宽确实会达到最大值(1.5Mbps),所以也许托管环境在这里也有一些影响。

带宽统计

nginx
  • 1 1 个回答
  • 334 Views

1 个回答

  • Voted
  1. Best Answer
    Luc van Donkersgoed
    2015-06-30T05:18:05+08:002015-06-30T05:18:05+08:00

    我相信您所经历的与 SPDY 的工作方式是一致的。

    在“旧”HTTPS 中,浏览器将以串行方式向服务器发送请求,这就是您在第一个屏幕截图中看到的内容。

    然而,使用 SPDY,所有请求都是同时发送的,之后服务器以它认为最佳的顺序响应文件。这就是您在第二个屏幕截图中看到的 - 请注意所有请求的开始时间都在同一时间点。

    服务器交付请求文件的顺序取决于服务器配置,但更重要的是,取决于资源优先级。想法是提前发送JS和CSS文件,这样网站就可以画了。之后,SPDY 应该发送图像和其他资源。

    因为您指出 SPDY 和 HTTPS 之间的时间DOMContentLoaded并load没有显着差异,所以我认为您的服务器运行正常。如果您想获得更快的油漆时间,请考虑优先级。

    来源,以及非常有趣的进一步阅读:

    • http://www.webpagetest.org/forums/showthread.php?tid=13485
    • https://thethemefoundry.com/blog/why-we-dont-use-a-cdn-spdy-ssl/
    • https://insouciant.org/tech/prioritization-is-critical-to-spdy/

    正如下面评论中所说,JayMcTee 发现他的具体情况是由带宽引起的——由于 SPDY 同时执行所有请求,带宽会更容易被填满,导致单个请求比串行执行时更慢。

    • 2

相关问题

  • Gzip 与反向代理缓存

  • nginx 作为代理的行为

  • Nginx 学习资源 [关闭]

  • 提供 70,000 个静态文件 (jpg) 的最佳方式?

  • 在 Apache、LightTPD 和 Nginx Web 服务器上提供 PHP 5.x 应用程序的现状?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve