2009-05-28 28 views
7

Điều tôi có một ứng dụng web (asp.net) mà cần phải có một nguồn cấp dữ liệu. Vì vậy, tôi đã sử dụng không gian tên System.ServiceModel.Syndication để tạo chức năng tạo 'tin tức'. Điều này là nó thực hiện mọi người ai đó gọi nó, tôi nên sử dụng nó chỉ để tạo ra một tập tin xml và làm cho url url rss của tôi vào tập tin?Thực hiện tốt nhất cho một nguồn cấp dữ liệu RSS trong C# (ASP.net)

Cách tiếp cận tốt nhất là gì?

Chỉnh sửa: Có thể đó là nơi tôi sai. Tôi không sử dụng một trình xử lý ... Tôi chỉ sử dụng một dịch vụ WCF trả về một Rss20FeedFormatter với dữ liệu.

Trả lời

8

Trong quá khứ khi tôi đã triển khai RSS, tôi đã lưu trữ dữ liệu RSS trong HttpContext.Current.Cache.

Dữ liệu RSS thường không phải cập nhật thường xuyên (ví dụ: một lần mỗi phút là quá đủ), do đó bạn chỉ phải thực sự nhấn DB một lần mỗi phút thay vì mỗi lần ai đó yêu cầu dữ liệu RSS của bạn .

Dưới đây là một ví dụ về cách sử dụng bộ nhớ cache:

// To save to the cache 
HttpContext.Current.Cache.Insert("YourCachedName", pObjectToCache, null, DateTime.UtcNow.AddMinutes(1), System.Web.Caching.Cache.NoSlidingExpiration); 
// To fetch from the cache 
YourRssObject pObject = HttpContext.Current.Cache[("YourCachedName"] as YourRssObject : null; 

Bạn cũng có thể thiết lập sau đây trong ashx của bạn:

context.Response.Cache.SetExpires(DateTime.Now.AddMinutes(1)); 

Điều này sẽ làm cho trang RSS của bạn phục vụ lên một phiên bản cache cho đến khi nó hết hạn. Điều này có ít tài nguyên hơn nhưng nếu bạn có những thứ khác sử dụng các cuộc gọi lớp truy cập dữ liệu RSS thì điều này sẽ không lưu dữ liệu đó.

Bạn cũng có thể làm cho nó bộ nhớ cache dựa trên một param truy vấn mà RSS của bạn có thể nhận được cũng bằng cách thiết lập:

context.Response.Cache.VaryByParams["YourQueryParamName"] = true; 
+0

Tôi đánh giá cao nhận xét ... nhưng họ không trả lời câu hỏi của tôi ... gợi ý ng hoặc chỉ tạo một tệp tĩnh? – sebagomez

+1

Tất cả các nguồn cấp dữ liệu tôi đã thực hiện đã sử dụng một trong các phương pháp này. Tôi chưa bao giờ sử dụng một tập tin tĩnh vì nó rất dễ dàng để không phải lo lắng về việc phải viết mới/thay thế các tập tin trên bay. – Kelsey

1

ASP.Net có một số bộ nhớ đệm phía máy chủ khá tốt được tích hợp. Giả sử bạn đang sử dụng các lớp này như một phần của trang aspx bình thường hoặc trình xử lý http (ashx), bạn có thể chỉ cho ASP.Net lưu bộ nhớ cache thay vì xây dựng lại nguồn cấp dữ liệu của bạn theo từng yêu cầu.

0

Trong trang aspx của bạn có thể không phải bạn chỉ cần sử dụng:

<%@ OutputCache Duration="60" VaryByParam="none" %> 

Tôi có một bài đăng trên blog được gửi tới điện thoại của tôi dưới dạng nguồn cấp dữ liệu RSS HERE.

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