Ответ 1
Завершение ответа (Response.Redirect(url)
или Response.Redirect(url, true)
) не будет иметь лучшую производительность, чем Response.Redirect(url, false)
. С помощью false
, поскольку вы контролируете выполнение кода, вы можете просто не выполнять больше кода в случае, когда вы собираетесь перенаправить пользователя.
Это указано в записи MSDN для Response.Redirect()
:
Если вы укажете true для параметра endResponse, этот метод вызывает метод End для исходного запроса, который генерирует исключение ThreadAbortException при его завершении. Это исключение оказывает пагубное влияние на производительность веб-приложений, поэтому рекомендуется передавать false для параметра endResponse.
Вы должны быть обеспокоены событиями жизненного цикла страницы, как вы отметили. Вы не должны продолжать выполнение событий страницы, если вы собираетесь перенаправить пользователя (не только для производительности). Недавно я написал краткий пример, показывающий что может случиться с плохим кодированием/планированием, если вы этого не сделаете.
В нижней строке этого сообщения указано, что Response.Redirect()
возвращает 302 в браузер. Существует вероятность проблем, когда вы используете Response.Redirect(url, false)
, так как выполнение страницы продолжается, и пользователь может игнорировать 302, а вместо этого видеть страницу, которая была бы визуализирована... поэтому вам нужно предпринять шаги, чтобы убедиться, что они не видите ничего, что вы не хотите, чтобы они видели. NoRedirect дополнение для Firefox полезно при тестировании.
Для лучшей производительности: используйте "false"
как параметр endResponse
, убедитесь, что вы не используете какой-либо дополнительный код, и убедитесь, что страница не будет отображать какую-либо информацию, t хотите, чтобы пользователь увидел, игнорируют ли они 302.