How do I use VaryByParam with multiple parameters?
Valid values for VaryByParam
are one of the following:
- The literal string
*
(asterisk), which varies by all parameters of the action method. - The literal string
none
(case-insensitive), which varies by no parameters of the action method. - A string containing the semicolon-separated names of the parameters you wish to vary by.
In your case, you'd want the first option:
[OutputCache(Duration = 30, VaryByParam = "*")]
public ActionResult Index(int customerId, int languageId)
{
}
If, however, you had some params you want to vary by and some that you don't, then you'd use the third option:
[OutputCache(Duration = 30, VaryByParam = "customerId;languageId")] // foo is omitted
public ActionResult Index(int customerId, int languageId, int foo)
{
}
Reference.
You can also use *
to include all parameters
[OutputCache(Duration =9234556,VaryByParam = "*")]