2012-06-11 64 views
6

Địa điểm ViewState được lưu trữ ở đâu? Nó được lưu trữ trong Server hoặc Client Side?ViewState được lưu trữ ở đâu?

Tôi có một dữ liệu khổng lồ cần được lưu trữ cho một số quy trình. Tôi đã sử dụng Session. Nhưng khi chuyển từ trang này sang trang khác, im không thể xóa phiên. Vì vậy, tôi nghĩ đến việc triển khai ViewState. Nhưng khi chạy với số lượng lớn dữ liệu ViewState là ném lỗi?

Tôi làm cách nào để giải quyết vấn đề này?

+0

Bạn nên nhìn vào bộ nhớ cache ASP.NET, bạn có thể thấy nó phù hợp với nhu cầu của bạn. –

Trả lời

8

Chế độ xem trực tuyến được lưu trữ trên trang tự ở dạng được mã hóa. Bạn không thể truy cập vào ViewState ở phía máy khách một cách trực tiếp. Bạn cần biết thuật toán mã hóa/giải mã để tìm nạp dữ liệu có giá trị từ viewstate này trong mã clientside.

Bạn có thể sử dụng biến ẩn để lưu trữ dữ liệu sẽ chỉ được sử dụng trên trang đó. Các biến ẩn có thể truy cập được từ phía máy khách và mã phía máy chủ.

Bạn có thể sử dụng Bộ nhớ cache hoặc phiên để lưu trữ dữ liệu có thể chỉnh sửa (dữ liệu lớn). Họ sẽ có hiệu suất tốt khi so sánh với ViewState.

Cache luôn sử dụng bộ nhớ của máy, các phiên sử dụng những gì đã được cấu hình:

Trong một trang trại web phiên có thể được địa phương (mà chỉ khi mối quan hệ được thiết lập hoạt động), hoặc từ xa (server tiểu bang hay cơ sở dữ liệu hoặc tùy chỉnh), nhưng bộ nhớ cache luôn là cục bộ.

Vì vậy, việc lưu trữ một DataTable trong bộ nhớ cache sẽ tiêu thụ bộ nhớ, nhưng nó sẽ không sử dụng tuần tự hóa.

PS: lưu trữ một DataSet thay vì DataTable sẽ thay đổi gần như không có gì.

Refer Cache Implementation

+0

đọc thêm về viewstate từ http://msdn.microsoft.com/en-us/library/bb386448.aspx và http://weblogs.asp.net/sreejukg/archive/2010/04/06/viewstatemode-in- asp-net-4-0.aspx –

+0

"Bạn không thể truy cập vào ViewState ở phía máy khách." Như một vấn đề của thực tế, bạn có thể truy cập nó, vì nó không được mã hóa (theo mặc định). Tuy nhiên, nó không thể thay đổi, vì nó có chứa một băm sẽ được xác nhận bởi ASP.NET. – Steven

+0

@Steven, tôi đồng ý với bạn rằng chúng tôi có thể truy cập vào ViewState nhưng sẽ không hữu ích nếu truy cập chúng vì chúng tôi sẽ nhận được giá trị thực tế/giải mã từ biến ViewState. –

7

Các ViewState không được lưu trữ ở hai bên, đó là gửi qua lại giữa máy chủ và trình duyệt trên tất cả các yêu cầu và đáp ứng, vì vậy nó không phải là một ý tưởng tốt để đặt một số lượng lớn các dữ liệu trong ViewState .

1

Lưu lượng lớn dữ liệu ở chế độ xem làm chậm trang web của bạn. Sử dụng chuỗi truy vấn để tìm nạp bản sao mới từ cơ sở dữ liệu trên mỗi trang thay vì lưu toàn bộ thông tin từ trang trước đó.

0

Xem các cửa hàng Thông tin trạng thái trong các trường ẩn. Thông tin di chuyển giữa máy chủ và ứng dụng khách trong các trường bị ẩn này.

Đối với điều khiển asp.net, .. theo mặc định .net thực hiện trạng thái xem cho tất cả điều khiển của nó, đó là lý do tại sao giá trị hộp văn bản không bị mất khi chúng tôi nhấp vào nút của trang đó.

3

Chế độ xem được lưu trữ ở nơi bạn nói. Theo mặc định, đây là một trường ẩn trên trang được gửi tới máy khách.

ASP.NET can also store ViewState inside the Session, tức là trên máy chủ, nếu bạn yêu cầu.

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