单页面应用文件增多时, 存在轻微过多阻塞页面加载的情况, 比如这样:
(对虽然可以考虑合并后调试, 但 RequireJS 合并并不快, 还要再考虑)
想到的一个方案是 SPDY 的请求合并功能, 比如这里的例子, 没有明显的 Blocking
https://www.modspdy.com/world-flags/
参考目前 SPDY 的浏览器支持, 我原来以为可以在开发环境尝试的
http://caniuse.com/spdy
基于 Nginx 的 SPDY 服务器
基本的配置是这样的, 具体步骤请参考其他文章,
测试的内容是一个有 20 个左右 JS 文件的 HTML 的加载:
server {
listen 443 ssl spdy;
ssl on;
ssl_certificate app.crt;
ssl_certificate_key app.key;
server_name app.app;
location / {
root /app/;
autoindex on;
}
}
结果是:
单纯 Nginx 使用 HTTP 的情况:
Nginx 里使用了 SPDY serve 静态文件的情况:
这个是后面的 Node 服务器 serve 静态文件的情况:
大致可以看到几点, 可能不够准确..
- SPDY 的请求是同时发出的, 不像是 HTTP 发出时间呈现阶梯状, 图上不够明显
- SPDY 中 blocking 的时间更长(但有上述的区别), 可能是 SSL 协议原因..?
使用 Node SPDY 服务器
网上找到了另一个方案, 使用 Node spdy
模块来加载文件
https://coderwall.com/p/2gfk4w
https://github.com/ericallam/spdy-with-server-push-tutorial
其中的策略是这样的:
预先加载静态资源文件, 当然, 还有证书之类的..
第一个请求访问 /
路径时, 把静态的 JS 等等文件 push 到服务端,res.end
访问 /
对应的 HTML 文件,
然后, 等浏览器去取静态资源时, 就可以直接命中缓存, 加快速度.
我仿照这个方案, 写了一些代码, 我们的项目开发环境存在上百个请求,
具体代码不方便, repo 里只是 SPDY 相关的代码:
https://github.com/jiyinyiyong/spdy-reload-server
注意使用命令去掉证书使用的密码, 否则 Node 启动时会提示的:
http://webmasters.stackexchange.com/a/1254/37858
另外这里我没有走 Nginx, 而是 https://127.0.0.1:3000
这是不使用 SPDY 协议时的情况:
使用了 SPDY 协议之后的情况:
我遇到到的几点, 图上看到比较少:
- SPDY 使用后的确加快了, 但效果不明显, 还是有
- 静态文件的 download 时间成了 0, 说明缓存起作用了
- 只有在 Chrome Canary 正常运行, 低版本 Chrome 会因为 push 而 crash
- Firefox 和 Safari 可能导致 Node 服务器报错
另外我还注意到 Canary 访问即便是 HTTP 也是比 Dev 版的 Chrome 快的... 不清楚为什么.
总结
- SPDY 能带来速度的提升, 但是并不明显, 反而改用 Canary 提升大一些
- 使用 Nginx SPDY 没能加快, 而 Node 对文件做缓存取得一定的效果.
- 可惜目前难以在开发环境用...
上面是我的一些尝试, 感觉不够严谨, 而且里边细节也不有理解和不能解释的...
等高人往深了挖一挖...
转自:http://segmentfault.com/a/1190000000471129
相关推荐
而SPDY(发音为 "speedy")是Google提出的一种网络协议,旨在提高网页加载速度,减少延迟,优化用户体验。它在HTTP的基础上进行了改进,尤其是对多路复用的支持,减少了TCP连接的数量。 **SPDY协议的特性** 1. **多...
也可以使用诸如curl命令配合spdy参数来测试SPDY是否正常工作。 值得注意的是,SPDY协议虽然由Google主导,但后来HTTP/2协议的开发接替了SPDY的发展和维护工作,HTTP/2是基于SPDY协议的升级和标准化版本。尽管如此,...
SPDY(发音为 "speedy")是一种由Google开发的网络协议,旨在减少网页加载时间,提高用户在浏览网页时的性能体验。这个协议是在HTTP/1.1的基础上设计的,目标是解决HTTP/1.1存在的若干效率问题,如头部冗余、请求...
所使用的静态站点是对现有优化欠佳的站点的主页的导出,可用于将来的测试:一些CSS,一些JS文件,一个嵌入式jQuery,约30张图像。 要快速学习 ,我建议使用以下页面: : 。 它使我可以快速地进行自我引导。 消息...
- 修改Nginx配置或编译新版本后,需要重新加载服务以使改动生效,可以使用`./nginx -s reload`命令。 - 最后,通过访问网站如`***`,检查HTTP响应头是否已经显示为伪装后的名称,以验证伪装是否成功。 **可能出现的...
适用于node.js的SPDY服务器 使用此模块,您可以在具有自然http模块界面并回退到常规https的node.js中创建 / 服务器(对于既不支持HTTP2也不支持SPDY的浏览器)。 这个模块命名spdy但它两个HTTP / 2(H 2)和SPDY(2,...
Nginx 官方文档中文版知识点总结 Nginx 是一个开源的 Web 服务器软件,可以作为 Web 服务器、反向代理服务器、缓存服务器、负载均衡器和媒体流服务器等。下面是 Nginx 官方文档中文版的知识点总结: 安装和配置 *...
- 编辑`nginx.conf`配置文件,在需要启用SPDY的服务器块中添加以下配置: ```nginx server { listen 443 ssl spdy; server_name jb51.net www.jb51.net; ssl_certificate ssl.crt; ssl_certificate_key ssl....
2. **压缩**:SPDY对HTTP头进行压缩,减少了不必要的数据传输,从而加快了页面加载速度。这一特性减少了在网络中传输的字节数,尤其是在低带宽环境下效果显著。 3. **优先级排序**:SPDY允许服务器根据请求的优先级...
### CentOS 6.5 安装 Nginx 1.7.8 教程 #### 知识点概览 1. **环境准备**:在 CentOS 6.5 ...此外,对于生产环境中的部署,还应考虑更多安全性和性能优化方面的配置,例如使用最新的 Nginx 版本、优化配置文件等。
### SPDY协议详解 #### 一、概述 SPDY(读作“speedy”)是一种由Google设计并开发的网络传输协议,旨在为万维网上的内容提供低延迟的传输服务。该协议的设计目的是减少网页加载时间,并提高用户体验。SPDY通过...
SPDY(发音为 "speedy")是Google提出的一种网络传输协议,设计目标是优化网页加载速度,减少页面渲染时间。SPDY在HTTP/1.1的基础上进行了改进,引入了多路复用、优先级排序、头部压缩等特性,其中SPDY Push技术是其...
要使用要通过 SPDY 加载的资源创建测试网页,请运行: node create-test-page.js [numberOfJsFilesToLoad] [numberOfCSSFilesToLoad] 。 这两个参数是可选的。 这将生成一个 index.html 页面,其中包含所需数量...
其中,需要指定 Nginx 的安装路径、配置文件路径和PID文件路径: ``` ./configure --sbin-path=/usr/local/nginx/nginx --conf-path=/usr/local/nginx/nginx.conf --pid-path=/usr/local/nginx/nginx.pid --with-...
手册中还包含了一些示例配置,比如设置纯Lua扩展库的搜寻路径,这说明了在Nginx中使用Lua模块时,需要配置好Lua代码的加载路径,以确保Nginx能够找到并正确加载Lua脚本。 手册最后提及的文档版本信息显示,手册描述...
SPDY并不是一种用于替代HTTP的协议,而是对HTTP协议的增强。新协议的功能包括数据流的多路复用、请求优先级...谷歌已经开发一个网络服务器原型机,以及支持SPDY协议的Chrome浏览器版本。 该文件是apache支持SPDY的扩展
SPDY (Speedy) 是一种由 Google 开发的网络协议,旨在提高网页加载速度,降低延迟,优化用户在互联网上的体验。它通过压缩头部信息、多路复用连接以及优先级排序等技术,显著提高了HTTP协议的效率。对于iPhone应用...