【发布时间】:2015-08-01 15:06:04
【问题描述】:
如果每次调用都需要计算很多东西并将其返回给客户端,那么缓存 Queryable 结果的最佳方法是什么。
代码示例
[Queryable]
public IQueryable<Car> Get()
{
try
{
var result=GetCarList();
//GetCarList() calculation is taking around 1 min
return result.AsQueryable();
}
}
GetCarList()
{
var query = from car in db.CarDetail
where car.color == "white"
select car;
//10k records of white cars are selected with out considering makers
//white is mandatory
foreach (var car in query)
{
//Processing each record in every call
}
}
查询示例
首页
localhost/api/Car?$filter=(make eq 'ford')&$orderby=carid desc&$top=10
第二页
localhost/api/Car?$filter=(make eq 'ford')&$orderby=carid desc&$top=10$skip=10
第三页
localhost/api/Car?$filter=(make eq 'ford')&$orderby=carid desc&$top=10$skip=20
每次调用都需要 1 分钟,即使当前过滤器的计算相同。缓存这种 api 调用的最佳方法是什么?
【问题讨论】:
-
我看到了这些选项,但缓存是基于完整的 url。这里每次 url 不同但过滤器相同
标签: caching asp.net-web-api odata asp.net-web-api2