Подтвердить что ты не робот

Рекомендации по перенаправлению на стороне клиента и серверной стороне: когда использовать что?

Я понимаю, что большинство языков поддерживают переадресацию на стороне сервера (asp.net: Response.Redirect, PHP: header( 'newpage' ) ; ). Вы также можете сделать переадресацию с помощью JavaScript (window.location.href="newLocationURL").

Когда вы выбираете один над другим?

Что касается ASP.net/IIS7(app пула в интегрированном режиме, включите 32-разрядные приложения = ложь), я заметил, что даже когда страница имеет заголовок 302, весь объект страницы отправляется на клиентскую сторону.

И Я считаю, что это не относится к PHP, отправляются только заголовки? Цитировать Перенаправление на стороне клиента означает следующие шаги: Клиентская сторона → Серверная сторона → Клиентская сторона → Серверная сторона → Клиентская сторона.

Перенаправление на стороне сервера означает: Клиентская сторона → Серверная сторона → Клиентская сторона (только заголовки) * → Серверная сторона → Клиентская сторона.

Есть ли вариант перенаправления W3C или серверной стороны, отличающийся от технологии одного веб-сервера до другого?

Изменить: меня беспокоит только Response.Redirect(в asp.net), а не server.transfer, по крайней мере для этого обсуждения

4b9b3361

Ответ 1

Пример JavaScript на самом деле не является перенаправлением. Нет средств для ответа 301/302. Это просто простой запрос, который случается во время определенного события Javascript долгое время после прихода страницы. Если вы сделаете это во время загрузки страницы, тогда у него будет больше накладных расходов, чем реальное перенаправление, и он не будет работать и с браузерами с отключенным JS.

Перенаправления должны быть инициированы с серверной стороны с ответом 301/302. Все языки/фреймворки webapp по умолчанию равны 302. Обычно вы можете сделать 301, добавив один дополнительный параметр или строку кода, который инструктирует это. Преимущество 301 заключается в том, что конкретный запрос не будет индексироваться (больше) поисковыми роботами.

Ответ 2

В ASP.Net существует важное различие между двумя типами перенаправлений на стороне сервера. Это Response.Redirect и Server.Transfer.

Если вы вызываете Response.Redirect, это влечет за собой две круглые поездки на сервер. При первом вызове сервера ответ сервера направляет браузер для запроса следующей страницы. Запрос следующей страницы представляет собой вторую поездку на веб-сервер.

Если вы используете Server.Transfer, есть только одна поездка туда и обратно. Поэтому сетевого трафика гораздо меньше. Тем не менее, существует ограничение на использование Server.Transfer, который заключается в том, что целевая страница должна находиться на одном и том же веб-сервере. То есть вы не можете Server.Transfer из своего веб-приложения на www.Google.com. Но вы можете Response.Redirect к нему.

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

Ответ 3

Это действительно зависит от того, где вы решите, что вам нужно перенаправить. Если это код на стороне сервера, который определяет, что вам нужно перенаправить, то это код на стороне сервера, который выдает команду перенаправления. Если вы можете решить, на какой стороне клиента требуется перенаправление, то сделайте это из кода клиента.

Вероятно, это более эффективно с клиентской стороны, поскольку вы избегаете перенаправления на стороне сервера.