2009-02-17 9 views
8

Tôi đang làm việc trên một dự án ASP.NET MVC và tôi đã đến điểm mà tôi muốn bắt đầu xem xét chiến lược bộ nhớ đệm của mình. Tôi đã cố gắng rời khỏi khuôn khổ của mình càng mở càng tốt để sử dụng trong bộ nhớ đệm.Chiến lược lưu bộ nhớ cache, Bộ nhớ cache đầu ra so với Bộ nhớ cache dữ liệu hoặc cả hai?

Từ những gì tôi nghe được trong podcast của Scott Hanselman StackOverflow.com sử dụng bộ đệm đầu ra của trang và nén nội dung đó và đặt vào RAM. Điều này nghe như thế này sẽ là tuyệt vời cho bộ nhớ cache toàn người dùng nhưng đối với một cái gì đó giống như các trang cá nhân, bạn sẽ phải cache một phiên bản cho mỗi người dùng và có thể mất kiểm soát rất nhanh.

Vì vậy, đối với chiến lược bộ nhớ đệm. Nên sử dụng cái nào, Bộ đệm đầu ra, Bộ nhớ đệm dữ liệu hoặc kết hợp? Suy nghĩ đầu tiên của tôi là cả hai nhưng theo như phụ thuộc vào bộ nhớ đệm thì có vẻ như nó có thể phức tạp một chút.

Trả lời

7

Hãy cẩn thận về bộ nhớ đệm quá tích cực. Mặc dù bộ nhớ đệm là một công cụ để giúp hiệu suất, khi được sử dụng không chính xác, nó thực sự có thể làm cho hiệu suất tồi tệ hơn.

Tôi không thể trả lời liệu bộ nhớ đệm đầu ra hoặc bộ nhớ đệm dữ liệu có hoạt động tốt hơn cho bạn hay không mà không biết thêm chi tiết về dự án của bạn. Tôi có thể giúp cung cấp một vài ví dụ về thời điểm sử dụng cái khác.

Nếu bạn có tập dữ liệu cụ thể mà bạn sẽ sử dụng thường xuyên ở nhiều chế độ xem khác nhau, bạn nên sử dụng bộ nhớ đệm dữ liệu tốt hơn. Bạn sẽ sử dụng điều này nếu thao tác tìm nạp dữ liệu của bạn rất phổ biến và tốn kém liên quan đến việc hiển thị dữ liệu của bạn. Nếu bạn có nhiều chế độ xem sử dụng cùng một dữ liệu, bạn sẽ tiết kiệm được thời gian tìm nạp dữ liệu của mình.

Nếu bạn có chế độ xem sử dụng tập dữ liệu rất cụ thể và hiển thị chế độ xem phức tạp và chế độ xem này được yêu cầu rất thường xuyên (ví dụ: trang chủ của ngăn xếp ngăn xếp), thì bạn sẽ được hưởng lợi nhiều từ bộ nhớ đệm đầu ra .

Vì vậy, cuối cùng, nó thực sự phụ thuộc vào nhu cầu của bạn và hãy cẩn thận khi sử dụng bộ nhớ đệm không chính xác.

+0

Về cơ bản nó là bản sao digg. –

+0

Xem Kigg (http://www.codeplex.com/Kigg) để biết ví dụ về ứng dụng ASP.NET MVC là một bản sao digg. nếu ứng dụng của bạn chính xác như một bản sao digg, sau đó tôi sẽ xuất bộ nhớ cache các trang câu chuyện và trang chủ. việc lưu vào bộ nhớ cache thông tin người dùng có thể cần thiết tùy thuộc vào cấu trúc dữ liệu của bạn trông như thế nào. – ajma

8

Chúng tôi đang thực hiện API và bộ nhớ đệm đầu ra trên trang web lớn (3 triệu lượt truy cập một ngày) trang web (cổng thông tin tin tức). Trang web này chủ yếu được người dùng ẩn danh sử dụng, nhưng chúng tôi đã xác thực người dùng và chúng tôi lưu trữ một trang web hoàn chỉnh chỉ vì họ, do một số phần được cá nhân hóa của trang web và tôi phải thừa nhận rằng chúng tôi hoàn toàn không gặp vấn đề gì với áp lực bộ nhớ.

Vì vậy, lời khuyên của tôi sẽ là bộ nhớ cache mọi thứ bạn có thể trong bộ nhớ cache API để tạo lại bộ nhớ cache đầu ra của bạn thậm chí còn nhanh hơn.

Tất nhiên, hãy chú ý đến các giá trị tỷ lệ bộ nhớ cache của bạn trong các bộ đếm hiệu suất. Bạn sẽ thấy số> 95% lần truy cập được lưu trong bộ nhớ cache.

Một điều cần lưu ý khác là việc vô hiệu hóa bộ nhớ cache, đây là vấn đề lớn nếu bạn có nhiều nội dung liên quan. Ví dụ: bạn lưu trữ nội dung nhạc và thông tin về một album hoặc bài hát có thể được hiển thị và lưu vào bộ nhớ cache trên vài trăm trang. Nếu bất cứ điều gì thay đổi trong bài hát đó, bạn phải vô hiệu hóa tất cả các trang này có thể có vấn đề.

Tóm lại, bộ nhớ đệm là một trong những tính năng tốt nhất của ASP.NET, nó được thực hiện tuyệt vời và bạn có thể dựa vào nó.

+4

Bạn có đang sử dụng trang trại không?Nếu vậy, mỗi máy chủ web có bộ nhớ cache inproc riêng của nó độc lập với các máy chủ web khác không? – frankadelic