2016-01-19 4 views
1

Я прочитал, что мне нужно сжимать запросы на свой Node-сервер, поэтому я использовал npm для установки модуля сжатия, добавил его с require() на мой server.js, а затем передал его как функцию app.use.NodeJS + ExpressJS Сжатие ничего не делает?

Затем я посмотрел на вкладку сети после, и я хотел посмотреть, насколько сжатие спасло меня в kb. Итак, я снял компрессию, перезапустил мой сервер, и это было такое же количество kb, как при включенном сжатии?

Вот мой server.js

var express = require('express'), 
    app = express(), 
    path = require('path'), 
    apiRouter = require('./app/routes/api'), 
    mongoose = require('mongoose'), 
    compression = require('compression'); 

app.use(compression()); 
app.use(express.static('public')); 
app.use('/api', apiRouter); 

app.use('*', function(req, res) { 
    res.sendFile(path.join(__dirname + '/public/index.html')); 
}); 

mongoose.connect('mongodb://localhost/triviaattack'); 

var db = mongoose.connection; 
db.on('error', console.error.bind(console, 'connection error:')); 
db.once('open', function() { 
    //Connected to DB successfully. 

}); 

app.listen(1337); 
+0

Отредактировав мой вопрос, случайно отправил версию server.js без модуля сжатия. Исправлена. –

ответ

1

При включении и выключении сжатия для проверки убедитесь, что вы выполняете жесткую перезагрузку в инструментах chrome dev, иначе вы получите «немодифицированный» ответ, который не будет сжат.

Ваш пример кода работает для меня!

+0

Спасибо. Я закрыл chrome.exe и перезапустил его между тестированием. –

+0

Теперь я могу видеть, что мои переданные байты были разрезаны пополам. Удивительно, не совсем уверен, что проблема была в первый раз, когда я тестировал, но я думаю, что ваш ответ был ответом, поэтому я отметил это. –

3

Сжатие не работает, если клиент не посылает "Accept-Encoding: GZIP" заголовка запроса. Вы можете протестировать компрессию here.

+0

Привет, любой способ проверить это, если я запускаю на localhost? Edit: Nm, я просто проверю консоль, если они отправляются. Когда я последний раз проверял, я не думаю, что они были. –

+0

Да, вы можете сделать завиток (см. Здесь: http://stackoverflow.com/questions/9140178/how-can-i-tell-if-my-server-is-serving-gzipped-content) или установить инструмент, такой как Fiddler. –

+0

В моей консоли Chrome я вижу, что заголовки запросов отправляются с заголовком gzip. Меня просто смутило, что переданные байты были одинаковыми при включении и выключении сжатия, по крайней мере, в соответствии с консолью chrome. Но, возможно, я буду использовать скрипача, это потрясающе, и я знаком с этим. –