0

編集: Sinatra で Ruby を使用しています。

更新:これは私が使用しているコードで、動作しません...

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 されていないことがわかります。

Web ページのコンテンツや JavaScript や CSS などの静的ファイルを GZIP する方法を理解しようとしていますzlib

データの文字列を渡すことができることはわかっていますがZlib::Deflate.deflate、ERB ファイルで Sinatra を使用しています。では、ERB ファイルと Js/CSS ファイルへのパスを渡す必要がありますか? または、スクリプト/スタイルが保存されているディレクトリを渡すことはできますか? ERB ファイルまたは ERB ファイルを参照するシンボルへのパスを渡しますか?

4

1 に答える 1

1

独自のHTTPサーバーを作成している場合を除き、サーバーがこれを処理する必要があります。クライアントは最初にサーバーにgzipコンテンツエンコーディングを受け入れることを通知する必要があり、次にサーバーはgzipコンテンツエンコーディングを配信できます。

Zlib :: Deflate.deflateは、gzipでエンコードされたデータを生成しません。zlibでエンコードされたデータのみを生成します。gzipストリームを開始するには、windowBits引数を31に設定してZlib::Deflate.newを使用する必要があります。

于 2012-06-10T15:11:58.023 に答える