我从数据库获得大约200K行。每次我点击分页它都会从DB获取记录。怎么避免呢?缓存??
public ActionResult Demo(int? page, string sortOrder, string recordSize)
{
int pageSize = Convert.ToInt32(recordSize = string.IsNullOrEmpty(recordSize) ? "20" : recordSize);
int pageNumber = (page ?? 1);
var customers = DBHelper.GetCustomers();
return View(customers.ToPagedList(pageNumber, pageSize));
}
答案 0 :(得分:4)
您永远不应该撤回所有要缓存或使用的行。这只是太多的数据而且你会在这样做时获得巨大的性能提升。您应该尝试只撤回您实际想要使用的数据。
如果您使用的是LinqToSql或EntityFrameWork或类似的数据访问,则可以使用linq检索所需的页面。这将是最有效的解决方案,因为您不会撤回所有200k行。
var customers = Customers.Skip(pageIndex * pageSize).Take(pageSize);
Caching可以第二次提高检索速度,但是您的初始速度问题将是每次请求从数据库中撤回所有200k行。是的,您可以将它们全部拉回来,缓存它们并使用它们,但这不是一种理想的方法。理想的缓存是缓存每个页面,并依赖于前一页面,以便您可以正确地使缓存无效。