假设我有一个类似
的页面请求http://localhost/accounting/products?id=234
有时它会像:
http://localhost/accounting/products?id=152
由于产品项目不经常更改,我希望将特定产品ID的每个页面缓存一小时。
因此,对于第一个请求,将对产品id = 234缓存页面,并在一小时内对产品id = 234的后续请求将从缓存中检索。产品id = 234经过1小时后的下一个请求,将从服务器检索新页面而不是从缓存中检索。等等。
我该怎么做?
答案 0 :(得分:5)
查看VaryByParam。
例如:
<%@ OutputCache Duration="3600" VaryByParam="id" %>
注意:正如Oenning所展示的那样,在MVC(而不是Web表单)中专门执行此操作的正确方法是归因于操作。
答案 1 :(得分:5)
Ofer Zelig的回答是正确的,但是当您使用MVC时,添加OutputCache配置的正确位置就在操作中。
[OutputCache(Duration=3600, VaryByParam="id")]
public ActionResult Products(int id)
{
//
return View();
}
答案 2 :(得分:0)
仅供参考,如果您有多个参数需要缓存,请用分号分隔:
// Cache 4 hours, by id and latlng
[OutputCache(Duration=60*60*4, VaryByParam="id;lat;lng")]
public async Task<ViewResult> Item(int id, double lat, double lng) . . .