public async Task
// some time-consuming operations
await Task.Delay(500);
await Task.Delay(700);
stopwatch.Stop();
Console.WriteLine("Elapsed time: {0}", stopwatch.Elapsed);
}
public class BlogPostService : IBlogPostService { private readonly BlogDbContext _context;
public BlogPostService(BlogDbContext context)
{
_context = context;
}
public async Task> GetBlogPostsAsync()
{
return await _context.BlogPosts.ToListAsync();
}
public async Task GetBlogPostByIdAsync(int id)
{
return await _context.BlogPosts.FirstOrDefaultAsync(p => p.Id == id);
}
}
public class BlogPostService : IBlogPostService { private readonly IMemoryCache _cache; private readonly BlogDbContext _context;
public BlogPostService(IMemoryCache cache, BlogDbContext context)
{
_cache = cache;
_context = context;
}
public async Task> GetBlogPostsAsync()
{
return await _cache.GetOrCreateAsync("BlogPosts", async entry =>
{
entry.SlidingExpiration = TimeSpan.FromMinutes(30);
return await _context.BlogPosts.ToListAsync();
});
}
public async Task GetBlogPostByIdAsync(int id)
{
return await _cache.GetOrCreateAsync($"BlogPost{id}", async entry =>
{
entry.SlidingExpiration = TimeSpan.FromMinutes(30);
return await _context.BlogPosts.FirstOrDefaultAsync(p => p.Id == id);
});
}
}