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 = "*")]