0

我有一个用户,我们称之为 PageA.aspx。此用户需要访问 PageB.aspx。显而易见的方法是使用超链接将它们简单地发送到 PageB.aspx。这让我想到了在页面之间获取的其他方法。可以使用 javascript 进行客户端跳转。还有看似庞大的服务器端重定向。

我想知道的是,如果有的话,这些不同方法之间的性能影响是什么。我将假设服务器端的重量要重一些,但是要重多少呢?这些方法的规模是否不同?以一种方式与另一种方式相比是否存在任何隐藏的问题?

谢谢!

4

3 回答 3

3

在大多数情况下,真正的链接是最好的。所有用户代理都知道链接是什么以及它代表什么。它最适合 SEO、可访问性和可用性。

如果您需要,例如,需要跟踪有关单击哪个链接的详细信息,则服务器端(通过回发)重定向很好……但这是对服务器的附加请求(以及对用户的时间)。它还搞砸了 SEO(等),因此它只是在适当的“网络应用程序”中的一个可行选项,其中蜘蛛或可访问性被控制或忽略。

JS 可以为您提供跟踪功能,但在禁用 JS 的环境中(单独)它是无用的。将活动发送回服务器会增加负载,因此需要考虑。

如果您需要它,请考虑使用标准链接并使用 jquery 来挂钩单击事件以跟踪事物。但真的......只有当你需要它时,它会稍微减慢用户体验。

简而言之:除非您有充分的理由不这样做,否则请遵守标准。

于 2009-05-12T22:50:48.997 回答
1

我认为重要的问题是用户为什么从 PageA 转到 PageB?他们做了什么导致这种情况发生?

是因为他们请求了一些不同的资源(“获取”),他们是否将数据提交到您的服务器(即它是“帖子”的一部分),用户是否知道 PageA 与 PageB 不同(它们在概念上是否相同资源,但对它有不同的看法)或其他什么?

其他考虑因素,例如在没有 PageA 的情况下是否可以访问 PageB(是否可以添加书签,是否有自己的 URL,是否应该在浏览器中将其视为不同的 URL?)将指导您。

如果不理解这些东西,很难给你一个“最佳”的解决方案。

至于使用 Server.Transfer 或 Response.Redirect,这里已经介绍了这两种方法的区别:

Server.Transfer 对比 Response.Redirect Response.Redirect 和 Server.Transfer 我什么时候可以通过 PostBackURL 使用 Server.Transfer?

哦,这些都不适合 ASP.NET MVC 应用程序,您应该改为路由到控制器上的操作。

http://weblogs.asp.net/mikebosch/archive/2008/02/02/asp-net-mvc-tip-2-redirecting-to-another-action-and-passing-information-to-it.aspx 重定向在其他控制器中操作

于 2009-05-12T22:58:50.717 回答
0

我的一般做法是,任何显示数据的页面都应该是一个 get。帖子应该接受数据,但不返回它,恕我直言。

因此,我(几乎)总是在发帖后进行重定向。这是防止用户错误的小成本。

一方面,它阻止了相同数据的多个帖子——如果用户出于任何原因重新加载(或点击后退按钮),我不希望重新提交数据。

搜索引擎问题也是一个重要问题。如果 PageB 是您要编入索引的页面,则无法通过 javascript 或帖子找到它。

于 2009-05-13T02:52:46.533 回答