Если у Вас есть сайт, который требует высокого уровня безопасности, Вы не хотите оставлять обработку своих данных для входа в систему внешнему поставщику, где Вы не имеете никакого контроля над доступом. Если поставщик OpenID взламывается, Вы оставляете свою безопасность до них.
Список параметров в VaryByParam должен быть разделен точками с запятой, а не запятыми. Попробуйте. Тем не менее, * должен был работать.
Я использую фильтр для кэширования вывода, который дает программный контроль над отладкой, а также устанавливает, когда это необходимо. Не стесняйтесь использовать это и посмотрите, изменит ли его установка здесь, что, я думаю, может (также убедитесь, что все предыдущие кеши очищены)
public class CacheFilterAttribute : ActionFilterAttribute
{
private const int Second = 1;
private const int Minute = 60 * Second;
private const int Hour = 60 * Minute;
public const int SecondsInDay = Hour * 24;
/// <summary>
/// Gets or sets the cache duration in seconds. The default is 10 seconds.
/// </summary>
/// <value>The cache duration in seconds.</value>
public int Duration
{
get;
set;
}
public int DurationInDays
{
get { return Duration / SecondsInDay; }
set { Duration = value * SecondsInDay; }
}
public CacheFilterAttribute()
{
Duration = 10;
}
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
if (Duration <= 0) return;
HttpCachePolicyBase cache = filterContext.HttpContext.Response.Cache;
TimeSpan cacheDuration = TimeSpan.FromSeconds(Duration);
cache.SetCacheability(HttpCacheability.Public);
cache.SetExpires(DateTime.Now.Add(cacheDuration));
cache.SetMaxAge(cacheDuration);
cache.AppendCacheExtension("must-revalidate, proxy-revalidate");
}
}
Я просто использую это пока для очень статической части сайта, поэтому используйте такой вызов
[CacheFilter(DurationInDays = 1)]
Очевидно, вы просто хотите расширить это, чтобы VaryByParams был представлен как свойство, которое может предоставлять, но звучит так, как будто вы знаете, что делать.