2011-02-04 87 views
5

Xin chào Một trong những mẹo trong "mẹo hiệu suất trang web" trong các blog khác nhau nói "Tránh chuyển hướng". Trong trường hợp của tôi, tôi đang sử dụng Response.Redirect cho cùng một trang. Tôi đang chuyển một chuỗi truy vấn và hiển thị thông tin thích hợp cho người dùng.Thay thế cho Response.Redirect() asp.net là gì?

Response.Redirect("FinalPage.aspx?NextID=" + ID); 

Vì vậy, trong logic kinh doanh của chúng tôi, tôi đang tải lại cùng một trang với thông tin khác nhau.

Vậy làm cách nào để tránh chuyển hướng? Có cách nào khác không? BTW, mục đích của tôi là đạt được một số hiệu suất ở đó.

Trả lời

6

Chuyển hướng là R trong mẫu PRG là mẫu được chấp nhận để xử lý các yêu cầu đã đăng. Vì vậy, nó chắc chắn không phải là điều ác.

Tuy nhiên, có từng là một chung câu hỏi phỏng vấn: "Sự khác nhau giữa Server.Redirect()Server.Transfer() và cái nào phải được sử dụng là gì" . Mọi người thường nói Transfer vì nó không liên quan đến chuyến đi khứ hồi nhưng web đã thay đổi rất nhiều kể từ đó. Trong những ngày đó bạn không thể tái sử dụng logic chung trong các khung nhìn trừ khi bạn sử dụng Chuyển hoặc Chuyển hướng, nhưng ngày nay đặc biệt với ASP NET MVC có rất nhiều cách để làm điều đó.

Trong trường hợp của bạn, tôi là tất cả cho PRG và tôi tin rằng chuyển hướng có nghĩa là chính xác hơn. Ngoài ra, nó ngăn cản biểu mẫu được gửi lại nếu người dùng nhấp F5 hoặc làm mới.

0

Bạn cũng có thể thực hiện Server.Transfer, không yêu cầu yêu cầu mới, do đó giảm tải trên máy chủ. Thêm thông tin so sánh hai là here.

Trong trường hợp của bạn, bạn muốn thực hiện chuyển hướng bởi vì bạn đang sửa đổi chuỗi truy vấn và thay đổi thứ gì đó trên trang, trái ngược với việc dịch chuyển yêu cầu ban đầu sang trang khác.

3

Đề xuất dành cho chuyển hướng không cần thiết.

Trường hợp của bạn khác - bạn đang chuyển thông tin tới trang, đây không phải là điều tương tự như chuyển hướng thông thường (ví dụ: trang đã di chuyển).

0

"ác" chính nếu nó có thể được gọi như vậy là chuyển hướng yêu cầu thêm một chuyến đi vòng; khách hàng yêu cầu một trang (thường là cùng một trang, chỉ định rằng một nút cụ thể đã được nhấp) và máy chủ trả lời rằng "yêu cầu trang này thay thế" và trình duyệt sẽ tuân thủ, dẫn đến máy chủ thực sự phục vụ trang tiếp theo.

Đôi khi cần thiết để thực hiện việc này, tuy nhiên hiện có nhiều cách tốt hơn để kiểm soát điều hướng trong trang web. Ví dụ: thay vì nút "biểu mẫu" gây ra đăng lại và chuyển hướng, bạn có thể sử dụng một LinkButton sẽ hoạt động giống như siêu liên kết, cho phép trình duyệt yêu cầu trực tiếp trang mới. Bạn cũng có thể sử dụng MultiView hiển thị các ASCX khác nhau và điều hướng bằng cách xem lật (tuy nhiên, hiểu rằng điều này có thể có các tác động hiệu suất riêng của nó, đặc biệt khi sử dụng chúng theo kiểu lồng nhau).

0

Tôi nghĩ rằng nếu bạn muốn chuyển hướng đến cùng một trang thì thay vì làm Response.Redirect("FinalPage.aspx?NextID=" + ID); bạn có thể sử dụng NextID trong ViewState cũng hay Hidden Field để bạn sẽ không cần phải chuyển hướng SAME page và sau đó kiểm tra xem hidden field hoặc viewstate thay vì kiểm tra QueryString

: D

Các vấn đề liên quan