Rails 3.1有一个方便的系统,可以将文件压缩为`.gz`文件。但是,我已经将由`assets:precompile`创建的所有资产文件移动到静态Web服务器上。这一切都有效,但我该如何让nginx正常提供`.gz`文件呢?
1)确保你安装了 Nginx > 1.2.x(以便正确修改头文件),并使用--with-http_gzip_static_module选项进行编译。
2)启用此选项gzip on(以使用gzip头文件返回后端响应)。
3)使用gzip_static on设置资源位置,以直接提供所有.css.gz和.all.js.gz文件。
4)防止为资源生成etag标记和计算last-modify。
5)打开正确的Cache-control来缓存SSL提供的静态资源,否则它们将在浏览器关闭后过期。
location ~ ^/(assets|images|javascripts|stylesheets|swfs|system)/ {
gzip_static on;
expires max;
add_header Cache-Control public;
add_header Last-Modified "";
add_header ETag "";
}
如果您想获取完整的Nginx配置,可以查看Github上的这个要点。
open_file_cache可帮助您缓存:打开文件描述符、它们的大小、修改时间和目录查找,这对于文件系统的高负载非常有帮助。
更新: 如果您想尽可能提升SSL连接,请启用SPDY。
rake assets:precompile
不再创建.gz文件。一些修复方法请参考https://multiplethreads.wordpress.com/2015/08/08/generate-gzip-assets-with-rails-sprockets-3/。 - Nishant