Tôi hiểu rằng mỗi lần làm mới trang, đặc biệt là trong 'AjaxLand', khiến lớp back-end/code-behind của tôi được gọi từ đầu ... Đây là một vấn đề bởi vì lớp (là một đối tượng thành viên trong System.Web.UI.Page) chứa rất nhiều dữ liệu mà nó nguồn từ một cơ sở dữ liệu. Vì vậy, bây giờ mỗi lần làm mới trang trong AjaxLand đang khiến tôi thực hiện các cuộc gọi DB phụ trợ lớn, thay vì chỉ sử dụng lại đối tượng lớp từ bộ nhớ. Bất kỳ sửa chữa cho điều này? Đây có phải là nơi các biến phiên chạy vào không? Biến phiên có phải là tùy chọn duy nhất tôi phải giữ lại một đối tượng trong bộ nhớ được liên kết với một người dùng đơn lẻ và một cá thể một phiên không?'Caching' một bảng lớn trong ASP.NET
Trả lời
Hãy xem MS này article về các cơ chế lưu bộ nhớ cache khác nhau cho ASP.NET. Có một phần có tên là "Cache đối tượng tùy ý trong bộ nhớ máy chủ" mà bạn có thể quan tâm.
Bạn cần ASP.Net Caching.
Cụ thể Data Caching.
Kể từ khi bạn đề cập đến Ajax, tôi nghĩ bạn có thể muốn xem xét những điểm sau đây:
Giả bộ dữ liệu lớn này là tĩnh và không thoáng qua, trong cuộc gọi đầu tiên đến Ajax, ứng dụng của bạn truy vấn cơ sở dữ liệu, lấy rất nhiều dữ liệu và trả về cho máy khách (tức là trình duyệt/JavaScript đang chạy trên trình duyệt, vv), máy khách hiện đã có tất cả dữ liệu đó trong bộ nhớ rồi. Sau đó, không cần phải quay lại máy chủ cho cùng một dữ liệu mà khách hàng của bạn đã có trong bộ nhớ. Những gì bạn cần làm là sử dụng JavaScript để xây dựng lại DOM hoặc bất kỳ thứ gì. Tất cả có thể được thực hiện trên máy khách từ thời điểm này trở đi.
Bây giờ giả sử dữ liệu không tĩnh nhưng thoáng qua, bộ nhớ đệm trên máy chủ bằng cách đặt chúng là phiên không phải là giải pháp mà bạn muốn. Mỗi khi máy khách gửi yêu cầu đến máy chủ và máy chủ chỉ trả về những gì trong bộ đệm (phiên), dữ liệu đã cũ và không có sự khác biệt nào với dữ liệu mà máy khách đã có trong bộ nhớ.
Vấn đề là nếu dữ liệu tĩnh, lưu các chuyến đi khứ hồi đến máy chủ khi bạn đã có dữ liệu trong bộ nhớ. Nếu dữ liệu là thoáng qua, tôi sợ không có giải pháp giá rẻ ngoại trừ truy vấn lại hoặc truy xuất lại dữ liệu bằng cách nào đó và gửi mọi thứ lại cho khách hàng.
Nếu dữ liệu của bạn dành riêng cho người dùng thì Session sẽ là cách để thực hiện. Hãy cẩn thận nếu bạn có một trang trại hoặc vườn web. Trong trường hợp đó, bạn sẽ cần một máy chủ Session hoặc cơ sở dữ liệu cho phiên của bạn.
Nếu dữ liệu của bạn ở cấp ứng dụng thì Application Data Cache có thể là cách để thực hiện. Hãy cẩn thận nếu bạn có RAM giới hạn và dữ liệu của bạn rất lớn. Bộ nhớ cache có thể tự dọn sạch tại một thời điểm không thích hợp.
Dù bằng cách nào, bạn sẽ cần phải kiểm tra xem ứng dụng của bạn hoạt động như thế nào với các thay đổi của bạn. Bạn thậm chí có thể tìm thấy quay trở lại cơ sở dữ liệu để được lựa chọn ít nhất là xấu.
Ngoài ra, bạn có thể xem Lazy Loading một số dữ liệu để giảm bớt dữ liệu.
- 1. Mẫu Caching trong ASP.NET
- 2. Caching dữ liệu trong ASP.Net
- 3. Caching trong ASP.NET MVC Framework
- 4. ASP.NET MVC Caching kịch bản
- 5. Asp.net MVC 2 caching
- 6. ASP.NET MVC - nén + caching
- 7. asp.net mvc - caching
- 8. Caching tất cả người dùng trong ASP.NET
- 9. Caching quang cảnh một phần trong asp.net MVC
- 10. Caching một điều khiển người dùng trong ASP.NET?
- 11. Xem một phần Caching trong ASP.NET MVC 3
- 12. Caching Data trong ASP.NET MVC 3
- 13. ASP.NET Web.Config ConfigurationManager.AppSettings File Caching
- 14. ASP.NET MVC AntiForgeryToken và Caching
- 15. Ủy quyền và ASP.NET MVC Caching
- 16. Caching một mảng PHP
- 17. phần trang Caching và VaryByParam trong ASP.NET MVC 3
- 18. Caching số lượng lớn các trang trên trang web php
- 19. ASP.NET MVC Caching khác nhau theo xác thực
- 20. Caching trong JavaFX WebView
- 21. Caching viewstate?
- 22. Tạo một bảng MySQL 150M hàng lớn
- 23. Caching một tệp nhị phân trong C#
- 24. Caching Data trong Web API
- 25. Asp.net - Caching vs Biến tĩnh để lưu trữ một từ điển
- 26. Tăng tốc độ tham gia bên trong giữa một bảng lớn và một bảng nhỏ
- 27. giá trị ViewState lớn trong ASP.NET
- 28. Donut Caching có hoạt động tốt với ASP.NET MVC không?
- 29. Caching IEnumerable
- 30. Caching trong WCF?
Mỗi lần làm mới trang sẽ làm cho trang được đánh giá (lại), bất kể AJAX có đang được sử dụng hay không. Mã AJAX của bạn KHÔNG được làm mới toàn bộ trang, nên sử dụng lại dữ liệu có liên quan * ở phía máy khách * (ví dụ: không phải là đối tượng .NET trong bộ nhớ [máy chủ]). –