Сервер. Передача по сравнению с ответом. Перенаправление

259
задан Ian Boyd 23 September 2013 в 15:25
поделиться

8 ответов

Response.Redirect просто отправляет сообщение (HTTP 302) вниз к браузеру.

Server.Transfer происходит без браузера, зная что-либо, запрос браузера страница, но сервер возвращает содержание другого.

227
ответ дан Mark Rucker 23 November 2019 в 02:39
поделиться

Передача является совершенно серверной стороной. Клиентская строка поиска остается постоянной. Некоторая сложность о передаче контекста между запросами. Сбрасывание и перезапуск обработчиков страниц могут быть дорогими также - Ваша передача рано в конвейере, например, в HttpModule во время BeginRequest. Прочитайте документы MSDN тщательно, и протестируйте и поймите новые значения HttpContext. Запрос - особенно в сценариях Обратной передачи. Мы обычно используем Сервер. Передача для ошибочных сценариев.

Перенаправление завершает запрос с 302 состояниями и клиентский ответ туда и обратно с и внутренне ест исключение (незначительный перфект сервера совершил нападки - зависит, сколько Вы делаете день), Клиент тогда перешел к новому адресу. Адресная строка браузера & история обновляет и т.д. Клиент оплачивает стоимость дополнительного распространения в прямом и обратном направлениях - стоимость варьируется в зависимости от задержки. В нашем бизнесе мы перенаправляем много , мы записали наш собственный модуль для предотвращения стоимости исключения.

6
ответ дан stephbu 23 November 2019 в 02:39
поделиться

Сервер. Передача не изменяет URL в клиентском браузере, таким образом, эффективно браузер не знает, что Вы изменились на другой обработчик серверных сторон. Ответ. Перенаправление говорит браузеру перемещаться в другую страницу, таким образом, URL в изменениях строки заголовка.

Сервер. Передача немного быстрее, так как она избегает одного распространения в прямом и обратном направлениях к серверу, но неизменение URL может быть или хорошим или плохим для Вас, в зависимости от того, что Вы пытаетесь сделать.

4
ответ дан krosenvold 23 November 2019 в 02:39
поделиться

Ответ. Перенаправление перенаправляет страницу к другой странице после , первая страница прибывает в клиент. Таким образом, клиент знает перенаправление.

Сервер. Передача выходит из текущего выполнения страницы. Клиент не знает перенаправление. Это позволяет Вам передавать переменные формы и строка запроса.

, Таким образом, это зависит к Вашим потребностям выбрать, который лучше.

28
ответ дан Canavar 23 November 2019 в 02:39
поделиться

Ответ. Перенаправление является более дорогостоящим, так как оно добавляет дополнительное прохождение в сервер для выяснения, куда пойти.

Сервер. Передача более эффективна однако, она может немного вводить в заблуждение пользователю, так как URL физически не изменяется.

, По моему опыту, разница в производительности не была достаточно значительной для использования последнего подхода

5
ответ дан deadbug 23 November 2019 в 02:39
поделиться

Быть Коротким: Response.Redirect просто говорит браузеру посещать другую страницу. Server.Transfer помогает уменьшить запросы к серверу, сохраняет URL тем же и, с небольшим избиением ошибки, позволяет Вам передавать переменные формы и строка запроса.

Что-то я нашел, и согласитесь с ( источник ):

Server.Transfer подобно в этом, это отправляет пользователю в другую страницу с оператором такой как Server.Transfer("WebForm2.aspx"). Однако оператор имеет много явных преимуществ и недостатков.

Во-первых, передавая другой странице с помощью Server.Transfer сохраняет ресурсы сервера. Вместо того, чтобы говорить браузеру перенаправлять, это просто изменяет "внимание" на веб-сервер и передает запрос. Это означает, что Вы не добираетесь вполне как много Запросов HTTP, проникающих, который поэтому упрощает давление на Ваш веб-сервер и подает Ваши заявки, выполненные быстрее.

, Но предостерегитесь: потому что процесс "передачи" может продолжить работать только те сайты, работающие на сервере; Вы не можете использовать Server.Transfer для отправки пользователя во внешний сайт. Только Response.Redirect могут сделать это.

, Во-вторых, Server.Transfer поддерживает исходный URL в браузере. Это может действительно помочь оптимизировать методы ввода данных, хотя это может сделать для беспорядка при отладке.

Это не все: Server.Transfer метод также имеет второй parameter— "preserveForm". При установке этого на True, с помощью оператора такой в качестве [1 110], существующая строка запроса и любые переменные формы все еще будут доступны странице, которой Вы передаете.

, Например, если Ваш WebForm1.aspx имеет контроль TextBox по имени TextBox1 и Вы передали WebForm2.aspx с preserveForm набором параметра к Правда, Вы сможете получить значение исходного управления страницей TextBox путем ссылки Request.Form("TextBox1").

73
ответ дан Josh Darnell 23 November 2019 в 02:39
поделиться

Response.Redirect() отправит Вас в новую страницу, обновит строку поиска и добавит его к Истории Браузера. На Вашем браузере можно нажать назад.

Server.Transfer() не изменяет строку поиска. Вы не можете защищаться.

я использую Server.Transfer(), когда я не хочу, чтобы пользователь видел, куда я иду. Иногда на "загружающейся" полосе набора.

Иначе я буду всегда использовать Response.Redirect().

91
ответ дан Mark Rucker 23 November 2019 в 02:39
поделиться

В дополнение к комментарию ScarletGarden также необходимо рассмотреть влияние поисковых систем и перенаправление. Эта страница переместилась постоянно? Временно? Это имеет значение.

см.: Ответ. Перенаправление по сравнению с "301, Перемещенными Постоянно" :

Мы все использовали Ответ. Перенаправление в какой-то момент. Это - быстрый и простой способ указать на посетителей в правильном направлении, если они так или иначе оказываются в неправильном месте. Но Вы знали тот Ответ. Перенаправление отправляет код состояния ответа HTTP "302, Найденных", когда Вы могли бы действительно хотеть отправить "301 Перемещенный Постоянно"?

различие кажется небольшим, но в определенных случаях оно может на самом деле иметь большое значение. Например, при использовании "301 Перемещенного Постоянно" кода ответа большинство поисковых систем удалит устаревшую ссылку из своего индекса и заменит его новым. Если Вы будете использовать "302 Найденных", то они продолжат возвращаться к старой странице...

10
ответ дан Diodeus - James MacFarlane 23 November 2019 в 02:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: