2010-08-26 7 views
10

Tôi đang làm việc trên một ứng dụng web trong ASP.NET/C# cần phải có khả năng mở rộng để xử lý tải người dùng cao (có thể sẽ chạy trong một trang trại). Vì nó sẽ phục vụ cho một số lượng lớn người dùng, khoảng 1 triệu cộng, nhưng số lượng người dùng trực tuyến sẽ vào khoảng 30K-50K. Tôi dự định sử dụng bộ nhớ đệm (nhà cung cấp dựa trên) và đã tự hỏi:Caching tất cả người dùng trong ASP.NET

  1. Bạn nên cache TẤT CẢ người dùng để thực hiện? Tôi có kế hoạch để cache tất cả các dữ liệu chung khác, như các thiết lập vv, nhưng làm thế nào hiệu quả nó sẽ được cache tất cả người dùng trong bộ nhớ? Nếu người dùng thay đổi tiểu sử của họ, tôi sẽ chỉ tải lại người dùng cụ thể đó trong bộ nhớ cache (có một bộ sưu tập tất cả người dùng). Bất kỳ đề xuất về phương pháp này?

  2. Tôi có cần phải lo lắng về việc khóa khi sử dụng bộ nhớ cache của người dùng ở trên không? Chỉ có một chỉnh sửa hồ sơ sẽ là người sử dụng chính mình, đó sẽ là một hoạt động nguyên tử, mặc dù sẽ có nhiều oeprations đọc trong các chủ đề khác nhau. Vì vậy, trong khi tìm nạp người dùng từ bộ nhớ cache hoặc cập nhật một người dùng cụ thể, tôi có nên sử dụng khóa không?

Cảm ơn

Asif

Trả lời

6

Đặt bất kỳ thứ gì trong Bộ đệm ẩn toàn cầu chỉ hữu ích cho một người dùng đơn lẻ thường là ý tưởng tồi và kẻ giết người thực hiện. Tối ưu hóa các truy vấn cơ sở dữ liệu của bạn và bạn sẽ có hình dạng tốt hơn nhiều.

Theo nguyên tắc chung, bạn chỉ nên giữ những thứ trong bộ nhớ cache tốn kém để lấy từ cơ sở dữ liệu và nhiều người dùng sẽ muốn xem thông tin đó cùng một lúc. Chẳng hạn như danh sách 100 sản phẩm hàng đầu hoặc thứ gì đó. Một lượng nhỏ dữ liệu tương đối rẻ để lấy từ cơ sở dữ liệu và điều đó chỉ hữu ích cho một người duy nhất nên ở vị trí hiện tại của họ.

Việc lưu vào bộ nhớ đệm làm tăng sự phức tạp một cách vô cùng, và thậm chí nhiều hơn thế trong một trang trại. Đừng giới thiệu sự phức tạp không cần thiết trừ khi bạn hoàn toàn phải làm vậy. Đợi cho đến khi bạn gặp phải sự cố hiệu suất thực tế trước khi cố giải quyết vấn đề.

0

người dùng Caching có lẽ là một ý tưởng tốt. Nhưng nó phụ thuộc vào lượng dữ liệu bạn sẽ lưu vào bộ nhớ cache cho mỗi người dùng và chi phí lấy dữ liệu đó từ bất cứ nơi nào nó được lưu trữ.

Để khóa - bất kỳ ai khác có thể chỉnh sửa tiểu sử của người dùng (như quản trị viên) không? Đó có phải là một sự xuất hiện chung không? Nếu vậy, bạn có thể muốn làm một số khóa. Nếu không, nếu chỉ người dùng có thể chỉnh sửa nội dung của riêng họ, tôi sẽ không bận tâm.