Question

How to use Server.Transfer("default.aspx") for better performance for navigating within the website. When I use this, it is not changing the url in the address bar. How can I achieve new url by server.transfer. Or (If Not) how can I gain performance with Response.Redirect("default.aspx").

Was it helpful?

Solution

You need to understand the difference between Response.Redirect("page.aspx") and Server.Transfer("page.aspx")

Server.Transfer:

  • It does not change the URL, so it is not for debugging purposes because you are not certain which page is running down in the browser since URL might not changed in more than one Server.Transfer statements.

  • It posts data from all controls on the Form on to the next page, from where you can access them using Request.Form["myTextBox"]

  • It only works within the same domain, it will not redirect outside the current domain name.

  • It does not cost a round trip on server back from browser, so it is faster as compared to Response.Redirect.

Use your best judgement when to use Response.Redirect and when to use Server.Transfer. I would only recommend using 'Server.Transfer' if you want to send Form Controls' data from one page to other, otherwise it will give you a debugging nightmare.

OTHER TIPS

I'm not sure I like the approach much, but if you insist on using Server.Transfer you could use the HTML5 History API to change the URL in the browser address bar once your response reaches the browser and is being processed there. Beware that only newer browsers support this functionality but as time passes this should stop to be a problem.

You would need a piece of JavaScript in your page to manipulate the current state of the history. This would look something like:

<script type="text/javascript">
    window.history.pushState({ path: <pageurl> }, '', <pageurl>);
</script>

The <pageurl> placeholder has to be set on the server to the real URL of the page you're actually processing in your Server.Transfer call.

There are tons of examples of how to use the html5 history api on the net by now, e.g. http://html5demos.com/history.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top