2010-02-25 28 views
5

Tôi đang tìm trong bộ nhớ đệm với ASP.NET MVC và tôi cũng đang ở giữa hoàn thiện máy chủ web. Tôi có hai câu hỏi ...asp.net mvc - caching

1) Bộ nhớ đệm có gây ra vấn đề khi thực hiện trên môi trường lưu trữ được chia sẻ vì tài nguyên được chia sẻ và tất cả? Câu hỏi này nghe có vẻ ngớ ngẩn, nhưng tôi không biết cách bộ nhớ đệm hoạt động như thế nào sau cảnh.

2) Trước khi triển khai bộ nhớ đệm, tôi muốn hỏi xem cách tiếp cận này có hợp lý hay không. Tôi sẽ cache càng nhiều càng tốt, và vô hiệu hóa nó khi cần thiết. Tuy nhiên, làm thế nào để bộ nhớ đệm làm việc cho một danh sách các mục được cập nhật rất thường xuyên, nói trong một phút hoặc một cái gì đó. Ví dụ, trang đầu của StackOverflow, với rất nhiều câu hỏi được thêm vào mỗi phút, trang đầu tiên có thể được lưu trữ không?

EDIT: 3) Tôi cũng muốn thảo luận cách bộ nhớ đệm hoạt động với phân trang và tất cả.

+0

bạn phải phân loại các mục bạn muốn lưu vào bộ nhớ cache. những thứ cập nhật thường xuyên không phải là một điều tốt để được lưu trữ. Trong trường hợp của ** stackoverflow ** Tôi sẽ không làm cho bộ nhớ cache có thể. Những thứ như thông tin tài khoản người dùng thiết lập trang web rộng rãi khi anh ấy đăng nhập, v.v ... những thứ này có thể được lưu trong bộ nhớ cache. Ngoài ra, nếu bạn có thể sử dụng bất kỳ phần mềm bộ nhớ cache của bên thứ ba, nó sẽ là tốt nhất như ** memcached **. –

+0

vì vậy bạn đang ngụ ý memcached là tốt hơn so với bộ nhớ đệm ASP.NET? – TPR

+0

nó không đơn giản như tốt hơn hay tệ hơn. Nếu việc xây dựng trong bộ nhớ đệm thực hiện những gì bạn cần thì bạn sẽ không làm tốt hơn ... nhưng bạn nên đặt trình bao bọc của riêng mình (như một giao diện) xung quanh bộ đệm - theo cách đó sẽ đơn giản thay đổi việc triển khai cơ bản bạn cần phải thực hiện. – Murph

Trả lời

1

Tôi nghĩ rằng một phút là một thời gian dài nếu bạn đang phục vụ 200 yêu cầu một giây và tôi đã có thể nghĩ rằng SO sử dụng bộ nhớ đệm đầu ra asp.net cho trang đầu. Họ cũng rất có thể sẽ sử dụng một số loại donut caching để lưu vào bộ nhớ cache các phần không cụ thể của người dùng.

Asp.net MVC sử dụng nhà cung cấp bộ đệm ẩn tiêu chuẩn ASP.NET không thay đổi. Trên một máy chủ chia sẻ Caching nên hoạt động chính xác tuy nhiên hãy lưu ý rằng máy chủ có thể khóa cài đặt bộ nhớ cache nếu chúng chọn ở cấp độ máy. Nhà cung cấp Cache xử lý việc quản lý bộ nhớ và sẽ xóa các mục khỏi bộ nhớ cache nếu mức sử dụng bộ nhớ quá cao. Tôi đề nghị bạn đọc các trang MSDN trên bộ nhớ đệm here.

Biến chứng đến từ môi trường nhóm không phải là máy chủ được chia sẻ nhiều. Trên môi trường nhóm, bộ nhớ đệm không được phân phối cho tất cả các máy, vì vậy mỗi máy có một bản sao riêng của bộ đệm. Nếu điều này đặt ra một vấn đề thì bạn sẽ cần phải điều tra một giải pháp bộ nhớ đệm phân tán, nhưng trong hầu hết các trường hợp đơn giản, điều này là tốt.

Đối với phân trang, tính năng lưu vào bộ nhớ đệm đầu ra của asp.net cho phép bạn thay đổi theo chuỗi truy vấn vì vậy nếu bạn có www.url.com?page=1, điều này sẽ được lưu trữ riêng trong bộ nhớ cache từ www.url .com? page = 2.