この辺で書いていたHTTPコンテンツ圧縮を行うPlack::Middleware::Deflater の Co-Maintainer にして頂いたので早速アップデートしました。Plackで運用されているとおぼしきアプリケーションは圧縮掛かってないことが多いので、転送量削減、レスポンス速度向上のために検討してみるのはどうでしょう。
問題があれば教えてくださいませ

Version 0.04 で追加した機能は、

  • content_type 毎に圧縮を行うか切り替える機能
  • Vary ヘッダにUser-Agentを追加する
  • 環境変数 psgix.no-compress, psgix.compress-only-text/html の導入

の3点です。psgix.no-compress, psgix.compress-only-text/html はそれぞれ Apache mod_deflateの no-gzip と gzip-only-text/html と同じ機能です。

おそらく問題が少なく動くサンプルは以下

builder {
  enable sub {
      my $app = shift;
      sub {
          my $env = shift;
          my $ua = $env->{HTTP_USER_AGENT} || '';
          # Netscape has some problem
          $env->{"psgix.compress-only-text/html"} = 1 if $ua =~ m!^Mozilla/4!;
          # Netscape 4.06-4.08 have some more problems
          $env->{"psgix.no-compress"} = 1 if $ua =~ m!^Mozilla/4\.0[678]!;
          # MSIE (7|8) masquerades as Netscape, but it is fine
          if ( $ua =~ m!\bMSIE (?:7|8)! ) {
              $env->{"psgix.no-compress"} = 0;
              $env->{"psgix.compress-only-text/html"} = 0;
          }
          $app->($env);
      }
  };
  enable "Deflater",
      content_type => ['text/html','text/css','text/javascript','application/javascript'],
      vary_user_agent => 1;
  sub { [200,['Content-Type','text/html'],["OK"]] }
};

毎度これをコピペするのはアレなんで、別途Middlewareがあるのがいいのかなと考え中。

あわせて読みたい

このブログ記事について

このページは、Masahiro Naganoが2011年5月17日 12:23に書いたブログ記事です。

ひとつ前のブログ記事は「DBIx::Sunny::Schema supports Filtering and Deflating」です。

次のブログ記事は「XtraDB の SHOW ENGINE innodb STATUS がすごい」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

ウェブページ

OpenID対応しています OpenIDについて
Powered by Movable Type 4.27-ja