在当今的移动互联开发趋势中,nghttp2是一个很值得大家去关注的一个开源项目。

我们在nghttpx模块中实现了HTTP/2服务器推送功能,并且在我们的nghttp2.org网站中启用了该推送功能。当你通过HTTP/2协议访问 https://nghttp2.org网站时,CSS文件/stylesheets/screen.css就会被推送到客户端。
nghttp2 blog

当你通过网络浏览器的调试功能观察该页面的加载过程的时候,你会发现有不少东西会冒出水面给你个惊喜:

大家可以看到图片中的 response 应答包头包含了一个 link: 的资源属性来发送额外的内容到浏览器客户端,而这个过程其实并不需要浏览器客户端主动的去请求的(因此这就需要对该DOM结构进行相应的解析了)。这向大家展示了真正的HTTP/2服务器推送功能了。

注意: 为了在你的浏览器调试界面的网络标签中显示出HTT/2协议信息, 请运行Chrome Canary这个版本的浏览器,详情请看http://ma.ttias.be/view-httpspdyhttp2-protocol-google-chrome/

这种服务器进行推送的方式所带来的好处是让下载stylesheet的过程更加快速。这你可以通过比较访问传统的HTTP/1.1网站和开启了服务器推送功能的HTTP/2的网站就很容易看出来了。

传统的HTTP/1.1页面加载

比如,以下图片显示的就是通过典型的传统HTTP/1.1协议方式访问我的博客网站时的流程。

从上图可以看到,在 GET / 这个请求发出后,就会需要等待大概20毫秒的时间去解析网页内容,然后才会开始对下一个资源 widget.css的请求。

启动了服务器推送的HTTP/2网页加载

相比HTTP/2的流程:

从中可以看到,DOM和其他额外的资源都不需要进行解析,客户端就已经可以下载 screen.css 这个资源了。这就不需要“浪费时间”在处理DOM和哪些额外的资源上面了,需要做的仅仅是发送另外一个请求到服务器端去把它们拿下来而已。

一旦你在你的一个页面中的所有资源都加上该功能后,你就很大可能为你的网站该网页的加载/渲染速度省掉100-200毫秒了。这些数据相信已经足够吸引你来实现HTTP/2功能了吧。

就响应速度和网页速度来说,HTTP/2将会给你带来巨大的惊喜--特别是当你使用了服务器端推送功能之后。

-----------------------完---------------------

引用英文连接:http://ma.ttias.be/service-side-push-http2-nghttp2/?s=hn

请尊重原创作/译者

微信知识共享公众号

CSDN

天地会珠海分舵

TechGoGoGo

http://blog.csdn.net/zhubaitian

拥抱HTTP2.0时代 - HTTP2.0实现服务器端推送Push功能的更多相关文章

  1. 09点睛Spring MVC4.1-异步请求处理(包含兼容浏览器的服务器端推送)

    转发地址:https://www.iteye.com/blog/wiselyman-2215852 9.1 异步请求处理 Servlet 3开始支持异步请求处理 Spring MVC 3.2开始支持S ...

  2. APNS push server端 SSL3.0 转 TLS (iPhone苹果推送服务)

    (转载此文,请说明原文出处) 苹果的官方公布 Update to the Apple Push Notification Service October 22, 2014 The Apple Push ...

  3. SignalR 聊天室实例详解(服务器端推送版)

    翻译自:http://www.codeproject.com/Articles/562023/Asp-Net-SignalR-Chat-Room  (在这里可以下载到实例的源码) Asp.Net Si ...

  4. 使用Pushlet将消息从服务器端推送到客户端

    使用Pushlet来实现服务器端向客户端推送信息 1.   实现方式: 有两种实现方式: 1.         通过配置文件来实现定时的从服务器端向客户端推送信息 2.         通过API主动 ...

  5. **极光推送PHP服务器端推送移动设备消息(Jpush V2 api)

    jpush.php  这是推送方法  用到curl发送请求 <?php /** * 极光推送php 服务器端 * @author yalong sun * @Email <syl_ad@1 ...

  6. Phonegap 极光推送api 服务器端推送代码

    .net 版本 极光推送 后台接口 HttpWebResponseUtility类 using System; using System.Collections.Generic; using Syst ...

  7. SuperSocket主动从服务器端推送数据到客户端

    关键字: 主动推送, 推送数据, 客户端推送, 获取Session, 发送数据, 回话快照 通过Session对象发送数据到客户端   前面已经说过,AppSession 代表了一个逻辑的 socke ...

  8. iOS 服务器端推送证书p12文件制作

    A.苹果服务器地址: Production和development用的push的服务器不同pdev是:$apnsHost = 'gateway.sandbox.push.apple.com';pro是 ...

  9. HTML5服务器端推送事件 解决PHP微信墙推送问题

    问题描述 以前的文章中<PHP微信墙制作,开源>已经用PHP搭建了一个微信墙获取信息的服务器,然后我就在想推送技术应该怎么解决,上一篇已经用了.NET 的signalr做了一个微信墙,PH ...

随机推荐

  1. 跨域请求jQuery的ajax jsonp使用常见问题解答

    前天在项目中写了ajax jsonp的使用,出现了问题:能够成功获得请求结果,但没有运行success方法,直接运行了error方法提示错误--ajax jsonp之前并没实用过.对其的理解为跟普通的 ...

  2. 深入理解Android中ViewGroup

    文章目录   [隐藏] 一.ViewGroup是什么? 二.ViewGroup这个容器 2.1 添加View的算法 2.1.1 我们先来分析addViewInner方法: 2.1.2 addInArr ...

  3. lua转让C++书面DLL达到“热更新”

    原创作品,请注明出处转载CSDN:http://blog.csdn.net/relar/article/details/38084689 开发游戏server往往有"热更新"的需求 ...

  4. 开源 自由 java CMS - FreeCMS2.0 签字

    项目地址:http://www.freeteam.cn/ 会员注冊 打开浏览器,输入http://localhost:8080/register.jsp. 输入注冊信息后点击"注冊" ...

  5. ArrayList实现根据某属性大小相间排序

    Java本身提供了一个集合的帮助类java.util.Collections,提供了对集合操作一些方法,借助于此类提供的sort方法可以实现对List进行排序操作 import java.util.A ...

  6. HTTPS背后的加密算法(转)

    当你在浏览器的地址栏上输入https开头的网址后,浏览器和服务器之间会在接下来的几百毫秒内进行大量的通信.InfoQ的这篇文章对此有非常详细的描述.这些复杂的步骤的第一步,就是浏览器与服务器之间协商一 ...

  7. 平均得分 【杭州电-HDOJ-2023】 附加题+详细说明

    /* 平均得分 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Su ...

  8. User、Role、Permission数据库设计ABP

    ABP 初探 之User.Role.Permission数据库设计 (EntityFramework 继承的另一种使用方法) 最近群里(134710707)的朋友都在讨论ABP源码,我把最近学习的内容 ...

  9. HDU 1598 find the most comfortable road (最小生成树) &gt;&gt;

    Problem Description XX明星有许多城市,通过与一个陌生的城市高速公路SARS(Super Air Roam Structure---超级空中漫游结构)进行交流.每条SARS都对行驶 ...

  10. &quot;错: void 值不被忽略,因为预期&quot;解决

    在C陷阱与缺陷,实现assert什么时候,在这个过程很聪明,化为一个表达式,在当条件为假时就会调用_assert_error报错并终止程序. 刚開始_assert_error 的返回值类型是 void ...