Кэширование не работающий правильно в моем веб-сайте MVC ASP.NET?

Если у Вас есть сайт, который требует высокого уровня безопасности, Вы не хотите оставлять обработку своих данных для входа в систему внешнему поставщику, где Вы не имеете никакого контроля над доступом. Если поставщик OpenID взламывается, Вы оставляете свою безопасность до них.

5
задан Pure.Krome 17 September 2009 в 08:17
поделиться

2 ответа

Список параметров в VaryByParam должен быть разделен точками с запятой, а не запятыми. Попробуйте. Тем не менее, * должен был работать.

4
ответ дан 15 December 2019 в 01:06
поделиться

Я использую фильтр для кэширования вывода, который дает программный контроль над отладкой, а также устанавливает, когда это необходимо. Не стесняйтесь использовать это и посмотрите, изменит ли его установка здесь, что, я думаю, может (также убедитесь, что все предыдущие кеши очищены)

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 был представлен как свойство, которое может предоставлять, но звучит так, как будто вы знаете, что делать.

0
ответ дан 15 December 2019 в 01:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: