Я оставлю в стороне любые мнения о том, когда следует оптимизировать веб-приложение.
Настройте различные конфигурации в приложении Sinatra для разработки и производства, поскольку некоторые из этих предложений вам не всегда захочется использовать. На самом деле, вам, вероятно, стоит пойти дальше и настроить и среду, аналогичную той, которую вы бы развернули в рабочей среде. Вы бы не развернули, просто запустив ruby app.rb
. Вы бы хотели поставить apache или nginx перед своим монгрелом. Mongrel будет обслуживать ваши статические файлы, но это действительно рекомендуется только для режима разработки. В развертывании веб-сервер будет делать намного лучше для этого. Короче говоря, ваша развернутая среда будет быстрее, чем ваша автономная среда разработки.
В этот момент я не стал бы беспокоиться о Монгрел против Тонкого. Если Thin в два раза быстрее - это не так - тогда ваши 7 секунд становятся 3,5. Это будет достаточно хорошо?
Некоторые вещи попробовать ...
Я знаю, что только что сказал вам настроить среду развертывания, но, возможно, это не на стороне сервера. Вы пытались запустить на своих страницах YSlow или PageSpeed ? Операции ввода-вывода займут больше этих 7 секунд (отказ от ответственности: я предполагаю, что в настройке вашей сети нет ничего плохого), чем сервер. YSlow - фактически Firebug - скажет вам, сколько времени занимает каждая часть вашей страницы, чтобы добраться до браузера.
Одна из вещей, которые YSlow сказал мне сделать, - это поместить далеко вперед заголовок Expires на мои статические активы, который я знал, но я оставлял оптимизацию до конца. Тогда я понял, что есть по крайней мере 3 разных места, где я мог указать этот заголовок . Я убеждаю себя, что делать это в nginx - правильное место.
Если вы довольны этими результатами, тогда вы можете посмотреть на сервер. От макушки головы, поэтому не исчерпывающий
- Включите ответы gzip.
- Объедините ваши таблицы стилей, так что на страницу требуется только один. Для этого может быть какое-то промежуточное программное обеспечение стойки, если вы не сделаете это вручную.
- Cache. Я пытаюсь Rack :: Cache .
- Используйте спрайты, чтобы уменьшить количество загружаемых изображений.
- Сократите свой Javascript. Опять может быть через Rack Middleware.
Rack Middleware аккуратен, но использует процессор. Итак, ручная минимизация вашего Javascript добавляет новый шаг в ваш рабочий процесс, но на сервере это быстрее, чем Middleware. Это компромисс.
Извините, если это было бессмысленно.