Рубрики
Без рубрики

6 простых способов ускорить экспресс

Автор оригинала: Scott Robinson.

Вступление

Экспресс Является безусловно, самая популярная веб-каркас для Node.js благодаря его простым API, доступным плагинам и огромным сообществу. Благодаря сообществу, нет нехватки документации и примеров о том, как использовать Core Express API, который отлично, но не всегда сразу понятно, как улучшить производительность вашего веб-приложения, как он растет. Здесь я покажу вам некоторые из самых простых и наиболее эффективных способов улучшить производительность ваших экспресс-приложений.

ГЦИП сжатие

Сжатие GZIP – это не совсем новое для веб-серверов, но это легко забыть, особенно когда вы используете для использования фреймворков, которые включают его по умолчанию. Это одно из тех улучшений, которые чрезвычайно просты в добавлении, и он обеспечивает большой повышение производительности. Сжатие содержимого вашего страницы может Уменьшить размер страницы до 70% Отказ

var compression = require('compression');
var express = require('express');

var app = express();

app.use(compression());

Run Express в режиме производства

По умолчанию Express будет работать в режиме разработки, который легко пропустить, особенно для тех, кто только начинает с Node.js/Express.

Итак, какая разница между режимом производства и развития в любом случае? Оказывается, в режиме разработки шаблоны просмотра читаются из файла для каждого запроса, тогда как в режиме производства шаблоны загружаются один раз и кэшируют. Это сделано, чтобы вы могли легко внести изменения на лету без необходимости перезапустить приложение каждый раз во время разработки. Однако в производственной среде это может значительно уменьшить вашу работу, поскольку вы должны иметь дело с медленным файлом IO по сравнению с гораздо более быстрее.

Счастливчик для вас, высказывание в режиме производства легко. Это просто вопрос установки переменной окружающей среды.

$ export NODE_ENV=production

Будьте осторожны с этим методом, хотя. Если сервер перезапускается, вы потеряете эту переменную среды и вернитесь к использованию режима разработки. Более постоянное решение состоит в том, чтобы установить переменную внутри вашего .bash_profile :

$ echo export NODE_ENV=production >> ~/.bash_profile
$ source ~/.bash_profile

Минифицируйте с UGLIFY

Для каждого веб-сайта, особенно те, кто с множеством стилей и клиентской функциональности, статические активы могут быть огромным сопротивлением производительности. Необходимость отправки нескольких файлов JavaScript и CSS для каждого запроса в конечном итоге принимает свой посылку на вашем сервере, и это даже не рассматривает время, когда пользователь должен дождаться всех отдельных HTTP-запросов, чтобы закончить на стороне клиента.

Чтобы помочь смягчить это, вы можете использовать утилитую пакет, как UGLIFY Чтобы министвовать и объединить файлы JavaScript и CSS. Объедините это с задач бегуном, как Грунт И вы легко сможете автоматизировать процесс и не нужно беспокоиться об этом. Довольно способный хрюкнутый файл (используя плагин grunt-up-uglify ) может выглядеть что-то подобное:

module.exports = function(grunt) {

	grunt.initConfig({
		uglify: {
			options: {
				banner: '/*! <%= pkg.name %> <%= grunt.template.today("dd-mm-yyyy") %> */\n'
			},
			dist: {
				files: {
					'dist/<%= pkg.name %>.min.js': ['<%= concat.dist.dest %>']
				}
			}
    	}
	});

	grunt.loadNpmTasks('grunt-contrib-uglify');
	grunt.registerTask('default', ['uglify']);
};

Уменьшите промежуточное программное обеспечение

Я не говорю, что вы никогда не должны использовать промежуточное программное обеспечение, очевидно, это необходимо, и есть много причин использовать промежуточное программное обеспечение в ваших экспресс-приложениях, но легко пойти за борт и копировать все промежуточное программное обеспечение, которое вы видите другие приложения. Просмотрите свой список зависимостей и решите, что вам действительно нужно все, что вы установили (куки, сеансы, I18N, запрос в системе и т. Д.).

В некоторых случаях вам нужна только промежуточные программы для разработки, поэтому вы можете легко отключить их в производстве:

var express = require('express');
var debugMiddleware = require('my-debug-middleware');

var app = express();

if (process.env.NODE_ENV !== 'production') {
	app.use(debugMiddleware());
}

Увеличить максимальные розеты

По умолчанию HTTP-сервер Node.js имеет лимит бассейна разъема только 5. Это очень консервативный номер, и большинство серверов могут обрабатывать гораздо более высокое количество розетков, чем это.

Кроме того, вы можете разрешить как можно больше розетки:

var http = require('http');
var https = require('https');

http.globalAgent.maxSockets = Infinity;
https.globalAgent.maxSockets = Infinity;

Редактировать : Это относится только к узлу V0.10 и старше. Как V0.12, Maxsockets (для обоих http и https ) установлено на Бесконечность Отказ

Используйте Cache-Control

Вы можете установить заголовок HTTP, который расскажет, что браузер пользователя кэширует контент, который только что получил. Это является хорошей идеей для статических активов (JS, CSS и т. Д.), которые меняются нечасто. Для присвоения настроек кэша шириной приложений, используйте:

var express = require('express');
var app = express();

app.use(express.static(__dirname + '/public', { maxAge: 31557600 }));

Это присваивает настройки кэша для всего в публичный каталог. Для более мелкозернистого контроля вы можете установить кэширование на основе индивидуальных запросов/маршрутов:

var express = require('express');
var app = express();

app.get('/index.html', function (req, res) {
	res.setHeader('Cache-Control', 'public, max-age=86400');
	res.render('index.html');
});

Заключение

Имейте в виду, что вы можете найти отличные советы, просматривая веб-сайты с открытым исходным кодом, как Призрак платформа для блога. Эти приложения разрабатываются и используются тысячами людей, поэтому вы обычно можете найти несколько больших полезных фрагментов, которые вы не услышали бы о ином.

Существует довольно много вещей, которые вы можете сделать за пределами экспресс, чтобы ускорить вещи, поэтому, если вы еще этого не сделаете, проверьте Redis, Nginx и другие механизмы кэширования, чтобы дать вашему приложению. Поверьте мне, это стоит ваше время.

Есть более экспресс-спектакль? Дайте нам знать об этом в комментариях!