Я не знаком с HttpContext.Current.Response.Redirect
, но, думаю, выдает ответ HTTP 301 или что-то подобное.
Коды ответов HTTP ВСЕГДА предпочтительны, потому что они встроены в, ну, в общем, HTTP. Все понимают их, и они всегда работают. Их уважают поисковые системы и другие автоматизированные приложения.
С другой стороны, метод Javascript не всегда работает и является нестандартным.
Кроме того, с помощью HTTP-кодов передаваемые данные сводятся к минимуму, а метод Javascript всегда должен загружать целую страницу.
РЕДАКТИРОВАТЬ: Для иллюстрации:
Это все, что нужно передать для работы перенаправления HTTP, стандартный заголовок HTTP:
HTTP/1.1 301 Moved Permanently
Location: http://somenewlocation.com/
Для Javascript это больше похоже на:
HTTP/1.1 200 OK
Date: Wed, 22 Jul 2009 07:56:14 GMT
Server: Apache/2.0.63 (Unix) mod_ssl/2.0.63 OpenSSL/0.9.8e-fips-rhel5 mod_bwlimited/1.4
P3P: CP="NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM"
Transfer-Encoding: chunked
Content-Type: text/html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<script>window.location = "somewhere.com"</script>
</head>
<body>
</body>
</html>
Полный документ HTML должен быть передан и оценен, что займет намного больше времени и не будет понято никем, кроме здравомыслящих браузеров Javascript.