Использование static(), staticCache() и compress() node.js для подключения промежуточного программного обеспечения
У меня есть приложение 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 -c 500 показывает 0 хитов кэша.
Очевидно, что я делаю что-то неправильно (я предполагаю, что порядок или параметры испорчены), но я не могу понять, что это такое. У кого-нибудь есть рабочий пример с этими тремя компонентами промежуточного программного обеспечения, которые работают правильно вместе?
Ответы
Ответ 1
- начните с размещения
app.use(express.compress());
в качестве первого промежуточного программного обеспечения, запомните промежуточное ПО в реальном времени в стеке FIFO...
- поместите часть
static
перед сеансовыми частями, еще лучше, разделите их на отдельные маршруты (/app - с помощью файлов cookie, session и bodyParser,/static - без них)
- ohh и забыть о
staticCache
, он устарел и несовместим с static
, если вы хотите, чтобы более зрелый статический сервисный компонент использовал st