我如何使用zlib GZIP静态资源?

时间:2012-06-10 09:17:41

标签: ruby sinatra gzip zlib

编辑:我正在使用Ruby和Sinatra。

更新:这是我正在使用的代码不起作用......

get '/' do
    session[:time] = Time.now
    z = Zlib::Deflate.new(6, 31)
    z.deflate(File.read('public/Assets/Styles/build.css'))
    z.flush
    z.finish
    z.close
    erb :home
end

......我没有任何错误。但是当我通过Firebug的Yslow插件检查文件时,它告诉我该文件不是GZIP'ed

我正在尝试了解如何使用zlib GZIP网页内容和JavaScript和CSS等静态文件?

我知道我可以将一串数据传递给Zlib::Deflate.deflate,但我正在使用带有ERB文件的Sinatra。那么我是否传递了ERB文件和Js / CSS文件的路径?或者我可以传入存储脚本/样式的目录吗?我是否会传递ERB文件或引用ERB文件的符号的路径?

1 个答案:

答案 0 :(得分:1)

除非您正在编写自己的HTTP服务器,否则您的服务器需要处理此问题。客户端首先必须让服务器知道它接受gzip内容编码,然后服务器可以提供gzip内容编码。

Zlib :: Deflate.deflate不会生成gzip编码的数据。它只会生成zlib编码的数据。你需要使用Zlib :: Deflate.new,windowBits参数等于31来启动gzip流。