好吧我的堆栈是Ubuntu,Nginx 1和Unicorn。我想让Nginx提供静态内容的预编译gzip。
相关的nginx配置:
location ~ ^/assets/ {
gzip_static on;
gzip_http_version 1.1;
gzip_proxied expired no-cache no-store private auth;
gzip_disable "MSIE [1-6]\.";
gzip_vary on;
expires 24h;
add_header Cache-Control public;
}
然后从另一个问题我跑过strace看他们是否被请求,结果:
open("/media/sf_ape/public/assets/application-ae30e133eabbb10d9464189d3fb71e25.js.gz", O_RDONLY|O_NONBLOCK|O_LARGEFILE) = 9
我已验证此文件存在。但是,当我观察访问日志时,它会传递常规.js文件,而不是.gz文件。我已经验证了请求的头指定了gzip,并且响应头现在显示为gzip。我已经搜索了很多,但到目前为止我还没有找到问题的答案。我本可以错过它,但任何帮助都会受到赞赏。
答案 0 :(得分:0)
我最终想到了这一点。运行rake资产时:预编译所有静态资产都会被编译并移动到/ public。例如,.js和.js.gz具有完全相同的时间戳。一旦我触摸* .gz,一切都正确。希望能节省一些时间。