标签: http2

与HTTP/1.1相比,HTTP/2如何提供更快的浏览速度?

我正在阅读一篇关于启动HTTP/2 的文章.据说HTTP/2基于SPDY(快速)协议,与HTTP/1.1相比,它可以通过使用"头字段压缩"和"多路复用"提供更快的浏览速度.这些术语如何正常工作?

我是否应该相信在HTTP/1.1请求中以"一个接一个"的方式处理?

http httprequest http-headers multiplexing http2

2
推荐指数
1
解决办法
522
查看次数

我服务http或http2?

背景

我已经在一个VPS上托管了多个node.js应用程序一段时间,而且一切都很好.

我可以通过使用nginx将流量路由到node.js应用程序所需的不同端口来实现.

升级到http2

随着最近对http2的推动,我一直试图通过启用http2来支持我的应用程序.在nginx上,我可以按照 nginx 的指南进行操作.

问题

在进行基准测试时,在测试网站上使用http2获取主页的47个请求时,性能似乎没有增加.

httphttp2的性能似乎相似.

理论

可能是因为nodejs服务于http1而不是http2?

我必须在nginx和我的nodejs应用之间设置任何东西吗?例如,proxy_http_version: 2.0然而,proxy_http_version 2.0 似乎没有可用还.

我的nodejs应用程序服务于快递,所以我真的得到一个http2连接或获得HTTP连接?

当我使用http2指示器时,它告诉我该网站通过指示蓝灯使用http2.我是否必须使用molnarg的http2模块或nginx http2模块是否足够?

希望有更多开发经验的人可以帮助我清除这一点,并希望其他许多开发人员.

nginx node.js http2

2
推荐指数
1
解决办法
1396
查看次数

ERR_EMPTY_RESPONSE与Ghost 0.7.5,Nginx 1.9,HTTPS和HTTP/2

问题

当我击中时kevinsuttle.com,我明白了

"No data received ERR_EMPTY_RESPONSE".
Run Code Online (Sandbox Code Playgroud)

当我点击时https://kevinsuttle.com,我得到了网站.

ghost 0.7.5
nginx 1.4 => 1.9.9
letsencrypt 0.2.0

数字海洋:Ubuntu 14.04 Ghost 1-click Droplet

Networking> Domains下,我有两个kevinsuttle.comwww.kevinsuttle.com作为A记录指向服务器的IP地址(@).

DNSimple记录

| Type  | Name                  | TTL               | Content                   |
|------ |---------------------  |---------------    |------------------------   |
| URL   | www.kevinsuttle.com   | 3600 (1 hour)     | http://kevinsuttle.com    |  

Ghost的config.js中唯一修改过的部分是我的域名.

url: 'http://kevinsuttle.com',
Run Code Online (Sandbox Code Playgroud)

Nginx 1.9

默认情况下,nginx 1.9不会创建以下目录:
/ etc/nginx/sites-available
/ etc/nginx/sites-enabled

并且通常的defaultconf不会在这两个目录中创建.

相反,有一个etc/nginx/conf.d/default.conf重要的, …

https nginx http2 ghost lets-encrypt

2
推荐指数
1
解决办法
2497
查看次数

Ruby HTTP2 GET请求

我正在尝试使用Ruby gem http-2向Google发送GET请求.

我直接从示例中提取了代码并稍微简化了一下:

require 'http/2'
require 'socket'
require 'openssl'
require 'uri'

uri = URI.parse('http://www.google.com/')
tcp = TCPSocket.new(uri.host, uri.port)
sock = tcp

conn = HTTP2::Client.new
conn.on(:frame) do |bytes|
  # puts "Sending bytes: #{bytes.unpack("H*").first}"
  sock.print bytes
  sock.flush
end
conn.on(:frame_sent) do |frame|
  puts "Sent frame: #{frame.inspect}"
end
conn.on(:frame_received) do |frame|
  puts "Received frame: #{frame.inspect}"
end

stream = conn.new_stream

stream.on(:close) do
  puts 'stream closed'
  sock.close
end

stream.on(:half_close) do
  puts 'closing client-end of the stream'
end

stream.on(:headers) do |h|
  puts "response …
Run Code Online (Sandbox Code Playgroud)

ruby http2

2
推荐指数
1
解决办法
175
查看次数

java.lang.NoSuchMethodError:sun.security.ssl.SupportedEllipticCurvesExtension

我从这里尝试了最新的alpn-boot罐子:https://mvnrepository.com/artifact/org.mortbay.jetty.alpn/alpn-boot 但它没有任何区别,它们甚至没有包含那个类.

我正在使用Sun JDK.

我在哪里可以找到正确的罐子?

java ssl http2

2
推荐指数
1
解决办法
5055
查看次数

HTTP / 2响应标头字段不在Google Chrome中的Pascal Case中

我在Google Chrome版本55.0.2883.95(64位)和Mozilla版本50.1.0上击中了相同的URL(由于客户的机密而无法公开该URL),但是Google Chrome和Mozilla浏览器上的响应标头字段不同。

Google Chrome浏览器的响应是:-

HTTP / 2 200 access-control-allow-origin:*内容编码:gzip内容类型:application / json; charset = UTF-8

标头字段不在Pascal Case中,但Mozilla的响应为:-

HTTP / 2 200 Access-Control-Allow-Origin:*内容编码:gzip内容类型:application / json; charset = UTF-8

标头字段为Pascal情况。

现在我知道这是每条RFC2616第4.2节(https://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html-sec4.2),其中说

“每个标题字段均由名称,后跟冒号(“:”)和字段值组成。字段名称不区分大小写。

但是我的客户在他的应用程序上运行了一些自定义缓存库,如果Content-Encoding标头不在Pascal情况下,它将开始抱怨。

有什么可能的解决方案的主意吗?提前致谢 :)

http http2

2
推荐指数
1
解决办法
289
查看次数

如何判断Safari是否使用HTTP2?

我尝试了Web Inspector中的所有选项卡,但没有找到任何有用的选项.谷歌也没有出现任何方式.

safari http2

2
推荐指数
1
解决办法
1432
查看次数

为什么Android的HttpUrlConnection不支持HTTP / 2?

我刚刚发现,Android推荐的http客户端HttpUrlConnection不支持HTTP / 2。

是否有特定原因不在Android上使用HTTP / 2?

networking android httpurlconnection okhttp http2

2
推荐指数
1
解决办法
1464
查看次数

如何知道是否使用HTTP 1.x或HTTP2执行请求

我想知道是否使用HTTP1.x或HTTP2在JavaScript客户端和Node.js服务器之间执行请求.

我在XMLHttpRequest,Chrome控制台和Node.js中如何知道使用什么类型的协议?

javascript http node.js google-chrome-devtools http2

2
推荐指数
1
解决办法
799
查看次数

Java 8 HttpUrlConnection无法解析具有HTTP协议2的响应

我们正在维护一个当前在Java 8上运行的项目。现在,我们必须通过其api调用合作伙伴服务器,以将一些数据迁移到我们的数据库中。

当我们调用他们的服务器时,我们得到了一个例外:

原因:org.apache.http.ProtocolException:服务器无法使用有效的HTTP响应进行响应

在这种情况下,响应代码为-1。

所以我尝试使用curl从他们的服务器获取数据,我看到他们的响应状态行是:

HTTP / 2 200

虽然HttpURLConnection像这样检查:

    if (statusLine.startsWith("HTTP/1.")) {
        int codePos = statusLine.indexOf(' ');
        if (codePos > 0) {

            int phrasePos = statusLine.indexOf(' ', codePos+1);
            if (phrasePos > 0 && phrasePos < statusLine.length()) {
                responseMessage = statusLine.substring(phrasePos+1);
            }

            // deviation from RFC 2616 - don't reject status line
            // if SP Reason-Phrase is not included.
            if (phrasePos < 0)
                phrasePos = statusLine.length();

            try {
                responseCode = Integer.parseInt
                        (statusLine.substring(codePos+1, phrasePos));
                return responseCode;
            } catch (NumberFormatException e) …
Run Code Online (Sandbox Code Playgroud)

java httpurlconnection java-8 http2

2
推荐指数
1
解决办法
49
查看次数