Это медленное использование перенаправления, потому что это вызывает дополнительный запрос? - PullRequest
4 голосов
/ 09 февраля 2009

В приложении Rails иногда вы используете перенаправление в действии ...

redirect_to :controller => 'sessions', :action => 'new'

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

Было бы лучше просто сделать шаблон?

render :template => 'users/new'

Ответы [ 3 ]

10 голосов
/ 09 февраля 2009

Основной причиной использования перенаправлений вместо рендеринга является обеспечение идемпотентного инварианта. Это в основном означает, что если вы изменяете что-то из POST или DELETE, вы должны перенаправить на следующую страницу. В противном случае, если кто-то попытается обновить, он может повторить операцию мутации. Это также облегчает пользователю, так как они всегда могут добавить в закладки определенную страницу. Это не обязательно верно, если вы использовали POST, чтобы добраться до текущего места.

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

4 голосов
/ 09 февраля 2009

Кроме того, не будет гораздо менее эффективным, поскольку средства поддержки активности HTTP 1.1 должны гарантировать, что браузер может повторно использовать то же соединение для выполнения второго запроса, а не для запуска еще раз.

0 голосов
/ 10 февраля 2009

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

Я работаю над большим веб-приложением. Как только мы начали использовать CSS Spriting , мы увидели огромное увеличение скорости загрузки. Намного больший прирост скорости, чем мы думали, что получим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...