2012-09-11 46 views
6

私はここに私のウェブサイトに埋め込みたい、かなり大きなJavaScriptファイルを持っています。 HTTPサーバは、ブラウザに配信する前にファイルをGZIPで処理できるほどスマートです。なぜSafariはGZIP圧縮を受け入れないのですか?

しかし、Google ChromeとSafariでテストしました。

Chromeでは、非常にうまく動作します。 400Kは約100Kに圧縮下る:

first

second

しかしSafariの圧縮上が動作しません:

third

fourth

面白い番目gz2b.pngでは、コンテンツエンコーディングが "gzip"に設定されていることがはっきり分かります。


注:私はすでにファイルは「.gzを」で終了することはできませんSafariやSafariでGZIP、バグをよく読んでは、GZIPを受け付けません。私のファイルは.gzで終わらないので、この問題は問題ではありません。

+0

サファリで受け取ったリクエストヘッダーには、コンテンツがGZIP形式で、その長さは119406バイトとなっています。あなたが使っているツールがあなたに真実を伝えていると確信していますか? – nos

+0

@nosこれは同じツールです。私はちょうど両方のブラウザに組み込まれているWebインスペクタを使用しています。 – Timo

+0

@nosあなたは正しいです。 Wiresharkは、ファイルが元のサイズよりもはるかに小さいことを明確に示しています。あなたが答えとしてあなたのコメントを投稿したいなら、私は喜んでそれを "正しい答え"としてマークします。 – Timo

答えて

7

サファリに送信されたHTTPヘッダは、(それがContent-encodingを持っている:GZIPヘッダを、そして、それはコンテンツ長が119406バイトであると言います)は、それが圧縮されていますと言う - 私は430.61を言って大胆な数よりも、それらの多くを信頼したいですWebインスペクタで一番上の列にある数字をどのようにして決定するのか、わかりません。

wiresharkを使用してHTTPリクエストをスニッフィングすると、ワイヤを通過するバイト数を確認できます。

9

iOS7 SafariモバイルiPadでウェブサイトの読み込み時間を最適化しようとしているときにも、この問題が発生しました。ローカルサーバ

  • デコード=非圧縮ファイルサイズから=非圧縮ファイルサイズエンコード

    • サーバから、ファイル送信された圧縮= =非圧縮ファイルサイズ+ヘッダが送信され、
    • コンテンツ長を受け転送

    Safariは、デバッガでこれらの数値を表す本当に奇妙な方法を選択しました。

  • 1

    これはもう少し前ですが、私は非常に似た問題、あるいはこの問題の原因を知りました。あなたはこのようなサファリのためにgzipでデータを圧縮する場合:

    gzip jquery.min.js 
    

    あなたは名前に変更する場合にも正しくgzipでエンコードされたファイルストリームとして指定された場合でも、Safariで失敗しますjquery.min.js.gzで終わるだろうjquery.jgzを参照してください。これは、ファイル名がgzipファイルにエンコードされているためです。

    あなたは、このようなgzipファイルエンコードする場合:

    cat jquery.min.js | gzip > jquery.jgz 
    

    を次に、あなたは数バイト小さいとSafariで完璧に動作しないファイルがあります。

    関連する問題