编辑:我正在使用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文件的符号的路径?
答案 0 :(得分:1)
除非您正在编写自己的HTTP服务器,否则您的服务器需要处理此问题。客户端首先必须让服务器知道它接受gzip内容编码,然后服务器可以提供gzip内容编码。
Zlib :: Deflate.deflate不会生成gzip编码的数据。它只会生成zlib编码的数据。你需要使用Zlib :: Deflate.new,windowBits参数等于31来启动gzip流。