基于 Nginx + Unicorn + Rails 3.1
关于 Http Steaming:
This lets the browser download your stylesheet and javascripts while the server is still generating the response. The result is noticeable faster pages. It’s opt-in and does require support from the web server as well, but the popular combo of nginx and unicorn is ready to take advantage of it.
它可以让浏览器在服务端还在生成 View 的时候,预先下载 Stylesheet 和 Javascript,直接带来的好处可想而知。
开启方式 app/application_controller.rb
class ApplicationController < ActionController::Base
protect_from_forgery
stream # 加这行
end
程序就修改好了,接下来是配置部署环境,首先需要用 Unicorn 来跑 Rails,并且 Unicorn 的配置文件里面 listen 要做修改
listen 5000, :tcp_nopush => false # 要加入后面 tcp_nopush => false 这段
接下来 Nginx 需要修改配置
http {
# http 区域加入下面两项
tcp_nopush off;
tcp_nodelay on;
server {
location / {
...
proxy_buffering on; # 反向代理处加入这项
proxy_pass http://rails_app_backend;
}
}
测试 Http Streaming 是否已经开启
$ curl -I http://youapp.com
HTTP/1.1 200 OK
Server: nginx/1.1.6
Date: Sat, 19 Nov 2011 15:49:25 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive
Status: 200 OK
如果返回的信息里面有保函 Transfer-Encoding: chunked
这项,那就说明已经成功了。