0

编辑:我将 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 文件

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

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

4

1 回答 1

1

除非您正在编写自己的 HTTP 服务器,否则您的服务器需要处理这个问题。客户端首先必须让服务器知道它接受 gzip 内容编码,然后服务器才能交付 gzip 内容编码。

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

于 2012-06-10T15:11:58.023 回答