2012-06-07 15 views
37

Tôi đang thêm bộ nhớ đệm vào một ứng dụng web ASP.NET. Đây là .NET 4, vì vậy tôi có thể sử dụng các lớp trong không gian tên System.Runtime.Caching (trong đó, như tôi hiểu nó, được bổ sung để cung cấp chức năng tương tự như trong System.Web.Caching, nhưng đối với không phải Web- ứng dụng.)Là System.Web.Caching hoặc System.Runtime.Caching thích hợp hơn cho một ứng dụng web .NET 4

Nhưng vì điều này ứng dụng web, tôi có nên sử dụng System.Web.Caching không? Hoặc là System.Runtime.Caching cao cấp hơn trong một số cách?

Trả lời

40

Microsoft khuyên bạn nên sử dụng System.Runtime.Caching cho tất cả các mục đích lưu vào bộ nhớ cache. Xem phần này: http://msdn.microsoft.com/en-us/library/dd997357.aspx

Mặc dù, tôi đã gặp một vài chủ đề mà mọi người đang gặp sự cố với phiên bản MemoryCache.Default. Sau một thời gian, nó ngừng hoạt động đúng cách. Bất kỳ mục nào bạn thêm bằng phương thức Thêm hoặc Đặt không thực sự được thêm vào bộ nhớ cache. Tôi đã thử như vậy và đã có thể tái sản xuất vấn đề này với một cách rõ ràng gọi MemoryCache.Default.Dispose() phương pháp.

Dưới đây là các liên kết: MemoryCache Empty : Returns null after being set

http://forums.asp.net/t/1736572.aspx/1

Tôi đề nghị là sử dụng System.Web.Caching (HttpContext.Current.Cache)

UPDATE:

Vấn đề này đã được sửa bởi MS. Kiểm tra câu trả lời được chấp nhận trong bài đăng dưới đây: Runtime Cache Issue Resolved

+3

+1 lớn! Lưu ý rằng mặc dù Microsoft đã sửa lỗi này - hãy xem câu trả lời của Scott Hanselman cho câu hỏi được liên kết ở trên. – TrueWill

+2

Bạn có thể vui lòng cập nhật câu trả lời của mình không? Tôi tìm thấy câu hỏi này và câu trả lời của bạn, nhưng một số tìm kiếm nhiều hơn nói với tôi rằng bây giờ có một sửa chữa cho rằng vì vậy Runtime.Caching được khuyến khích bây giờ :) –

+1

Cập nhật câu trả lời để phản ánh tình trạng mới nhất. – dotnetster

11

System.Runtime.Caching cho phép bạn lưu vào bộ nhớ cache trên tất cả các ứng dụng .Net, không chỉ quy trình công nhân IIS. Vì vậy, nếu bạn có yêu cầu sẽ truy cập bộ nhớ cache trong nhiều tình huống, hãy sử dụng System.Runtime. Ngoài ra, bạn có thể kiểm tra bộ điều hợp bộ nhớ cache này cho phép bạn trao đổi giữa thời gian chạy, web và ứng dụng lưu vào bộ nhớ đệm vải. https://bitbucket.org/glav/cacheadapter

Một điều nữa, nếu bạn có trang trại đa máy chủ, với cấu hình cân bằng tải đảm bảo bạn có phiên cố định hoặc mô hình bộ nhớ cache được phân phối.

+0

bất kỳ mã nguồn mẫu đầy đủ nào? – Kiquenet

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