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