Если вы публикуете содержимое журнала во время обработки первого запроса, возможно, мы сможем выяснить, что делает его таким медленным. Например, это мой журнал, когда первый пользователь заходит на сайт
Booting Mongrel (use 'script/server webrick' to force WEBrick)
Rails 2.1.0 application starting on http://0.0.0.0:3000
Debugger enabled
Call with -d to detach
Ctrl-C to shutdown server
** Starting Mongrel listening at 0.0.0.0:3000
** Starting Rails with development environment...
/usr/lib/ruby/gems/1.8/gems/actionpack-2.1.0/lib/action_controller/mime_type.rb:66: warning: already initialized constant CSV
** Rails loaded.
** Loading any Rails specific GemPlugins
** Signals ready. TERM => stop. USR2 => restart. INT => stop (no restart).
** Rails signals registered. HUP => reload (without restart). It might not work well.
** Mongrel 1.1.5 available at 0.0.0.0:3000
** Use CTRL-C to stop.
Processing SessionsController#new (for 127.0.0.1 at 2009-05-26 12:26:00) [GET]
Session ID: de2acf074759026e1ed6205724f547a9
Parameters: {"action"=>"new", "controller"=>"sessions"}
Rendering sessions/new
Completed in 0.00587 (170 reqs/sec) | Rendering: 0.00298 (50%) | DB: 0.00092 (15%) | 200 OK [http://localhost/]
Я думаю, что 170 запросов в секунду - это хорошо для нашего приложения, но другие могут счесть это медленным. Из статистики видно, что rails предоставляет половину времени, затрачиваемого на рендеринг ответа - в этом случае генерируется HTML для экрана входа в систему. Если этот запрос занимал много времени, моим первым портом захода были бы представления и помощники, связанные с экраном входа в систему.
Если у вас есть система, которая занимает много времени для инициализации себя по самому первому запросу, то почему бы не быть хитрым и написать собственную программу запуска, которая сначала запускает rails, а затем отправляет поддельный запрос через curl. Таким образом, ваши пользователи никогда не увидят проблему.
Chris