6

お立ち寄りいただきありがとうございます。私は実際にこれを自分で試しましたが、やはり私には扱いきれないようです.

状況...


私は共有ホスティング事業者で自分のウェブサイトを運営しています。cms で生成された大量の js と css を圧縮して PageSpeedInsights と自分自身を満足させたいと思ったとき、それを読み込んで、ついに私のホスティング会社には mod_gzip も mod_deflate もインストールされていないことがわかりました。インストールされるのはZLIBです。だから私は検索しました。典型的な php 追加ソリューションを見つけましたが、気に入りませんでした。htaccess のきちんとしたコード行をいくつか見つけたので、すぐに機能したので満足しました。

AddHandler application/x-httpd-php .html .htm .php .js
php_flag output_buffering On
php_value output_handler ob_gzhandler
php_flag zlib.output_compression Off

GIDZipTestを使用して動作を確認しました。これはすべて問題なく、私はそれが大好きです。

しかし、.css を AddHandler リストに配置するとすぐに、ページが完全に壊れてしまいます。CSSファイルのみにob_gzhandlerでphpソリューション
を使用しようとしましたが、まったく機能しませんでした。ただ何もしません。


回避策? (あまり)


すべての css を手動で縮小し、各ファイルの css.gz バージョンをアップロードして、

RewriteCond %{HTTP:Accept-encoding} gzip
RewriteCond %{REQUEST_FILENAME}\.gz -s
RewriteRule ^(.*)\.css $1\.css\.gz [QSA]
RewriteRule \.css\.gz$ - [T=text/css,E=no-gzip:1]

これもうまくいきます。


質問!


  1. css 圧縮を機能させるには、何を定義/指定する必要がありますか? いくつかの変換要素が欠けているように感じます...

  2. 手動で縮小した .css.gz ファイルをクライアントに提供している場合、ファイルは余分に圧縮されますか?

  3. これにより、ファイルサイズがさらに有利になりますか、それとも手動で提供されるバージョンに固執して、Google PageSpeed について ** を指定する必要がありますか?
    (GIDZipTest は、縮小されたファイルに対しても「what if」シナリオを表示します。これは、正直に言うと印象的な数字です。私はそれを望んでいます...)

コメントをいただきありがとうございます。
敬具

マリアン

4

4 に答える 4

0

PHP+zlib ソリューションは、Web サーバーから提供されるすべての PHP ファイルを自動的に圧縮します。これは、php ハンドラーに入れるすべてのファイルが圧縮されてクライアント ブラウザーに送信されることを意味します。とにかく、 AddHandler ディレクティブは、css ファイルを php スクリプトとして処理するよう Web サーバーに指示します。そのため、「壊れている」と思います。Css ファイルには、独自のハンドラー (text/css) が必要です。

別の (テストされていない) 解決策は、最初に定義したハンドラーを保持することです。

AddHandler application/x-httpd-php .html .htm .php .js .css

css ファイルの先頭に次の php コードを追加します。

<?php header('Content-Type: text/css'); ?>

しかし、これが機能するかどうかはわかりません。これにより、実際に css ファイルを受信して​​いることをブラウザーに伝える必要があります。

これらの場合の最善の解決策は、あなたが言及した mod_deflate です。

于 2012-09-08T13:52:49.710 に答える
0

コンテンツを圧縮して配信しますが、送信用だけではありません。これはContent-Encodingで行われます。そのため、クライアントはコンテンツを解釈する前に解凍しません。

MultiViewsを有効にして、 mod_negotiationで自動コンテンツ ネゴシエーションを許可できます。

<FilesMatch "\.css$">
    Options MultiViews
</FilesMatch>
于 2012-09-08T16:18:44.487 に答える
0

古い質問ですが、コードを変更せずに機能する .htaccess ソリューションを見つけました。

AddHandler application/x-httpd-php .html .htm .php .js .css
<Files *.css>
    Header set Content-type "text/css"
</Files>
php_flag zlib.output_compression On
php_value zlib.output_compression_level 5
于 2015-05-14T01:15:16.867 に答える
0

したがって、同様の問題が発生した場合は、この記事を読んで、完全な Web ディレクトリ パスを正しく取得することをお勧めします。

php スクリプト (例: "gzip-css.php") を作成します。

<?php
ob_start("ob_gzhandler");
header("content-type: text/css; charset: UTF-8");
?>

先頭に .htaccess を追加します

<FilesMatch "\.css$">
ForceType application/x-httpd-php
php_value auto_prepend_file "/full/path/to/that/file/see/link/above/gzip-css.php"
</FilesMatch>

すべての .css ファイルに。これは今まで私にとって唯一の解決策のようでした。以前に完全なパスを見つけていれば、ここで質問しなくても、これを正しく理解できたはずです。AddHandler バージョンと css tho を組み合わせる方法について、誰かがまだより良いアイデアを持っているかもしれません。

機能しなかったこと (すべての css を完全に無効にします
) : - 手動で gzip された css ファイルを提供し、コンテンツ タイプ スクリプトを先頭に追加する - 2 つの組み合わせ

于 2012-09-10T08:10:46.637 に答える