19

Express 3.0アプリを使用していて、、、、およびミドルウェアを使用して静的ファイルを提供および圧縮しようとしてstatic()staticCache()ますcompress()。これは私の現在のapp.configure()機能です:

 app.configure(function() {
  app.use(express.favicon(__dirname + '/public/favicon.ico', {maxAge: 86400000}));
  app.use(express.bodyParser());
  app.use(express.cookieParser('foo'));
  app.set('views', __dirname + '/views');
  app.engine('.html', mustache({cache: true}).render);
  app.use(express.session({ store: sessionStore, secret: 'foo'}));
  app.use(express.staticCache());
  app.use(express.static(__dirname + '/public', {maxAge: 86400000}));
  app.use(express.compress());
});

// routes are loaded here

この構成では、YSlowは、.cssファイルと.jsファイルが圧縮されておらず、ブラウザーをクリアしてページを複数回更新しないとキャッシュヒットを取得できないことを報告します。また、staticCacheミドルウェアにデバッグステートメントを挿入してキャッシュヒットを報告し、ab -n 10000-c500を実行するとキャッシュヒットが0になります。

明らかに私は何か間違ったことをしている(順序やオプションがめちゃくちゃになっていると思う)が、それが何であるか理解できない。これらの3つのミドルウェアが正しく連携して動作する実例はありますか?

4

1 に答える 1

1
  • を最初のミドルウェアとして配置することから始めapp.use(express.compress());ます。ミドルウェアが FIFO スタックにあることを思い出してください...
  • static部分をセッション部分の前に置き、さらに良いことに、それらを別々のルートに分割します (/app - Cookie あり、セッションと bodyParser あり、/static - なし)
  • ああ、もっと成熟した静的サービングコンポーネントの使用が必要な場合は、staticCache非推奨で互換性がないことを忘れてくださいstaticst
于 2014-05-24T07:13:02.010 に答える