如何为不同的查询字符串值配置OutputCache页面属性?

all*_*lan 4 asp.net asp.net-mvc asp.net-mvc-3

假设我有一个类似的页面请求

HTTP://本地主机/会计/产品ID = 234

有时它会像:

HTTP://本地主机/会计/产品ID = 152

由于产品项目不会经常更改,因此我希望将特定产品ID的每个页面缓存一小时.

因此,对于第一个请求,将对产品id = 234缓存页面,并在一小时内对产品id = 234的后续请求将从缓存中检索.产品id = 234经过1小时后的下一个请求,将从服务器检索新页面而不是从缓存中检索.等等.

我该怎么做?

Ofe*_*lig 6

看看VaryByParam.

例如:

<%@ OutputCache Duration="3600" VaryByParam="id" %>
Run Code Online (Sandbox Code Playgroud)

注意:正如Oenning所证明的那样,正确地在MVC(而不是Web窗体)中执行此操作的正确方法是通过归因于操作.


goe*_*ing 6

Ofer Zelig的回答是正确的,但是当您使用MVC时,添加OutputCache配置的正确位置就在操作中.

[OutputCache(Duration=3600, VaryByParam="id")]
public ActionResult Products(int id)
{
    //
    return View();
}
Run Code Online (Sandbox Code Playgroud)