This class encloses functionality related to output caching (cacheableportlet, xsltapplication, ...)
Beispiel #1
0
        public static void InsertOutputIntoCache(double absoluteExpiration, double slidingExpiration, string cacheKey, object output, CacheDependency cacheDependency, CacheItemPriority priority)
        {
            // -1 means it comes from web config
            var absBase     = absoluteExpiration == -1 ? OutputCache.GetAbsoluteExpirationSeconds() : absoluteExpiration;
            var slidingBase = slidingExpiration == -1 ? OutputCache.GetSlidingExpirationSeconds() : slidingExpiration;

            // 0 means no caching
            var abs     = absBase == 0 ? Cache.NoAbsoluteExpiration : DateTime.UtcNow.AddSeconds((double)absBase);
            var sliding = slidingBase == 0 ? Cache.NoSlidingExpiration : TimeSpan.FromSeconds((double)slidingBase);

            if (abs != Cache.NoAbsoluteExpiration && sliding != Cache.NoSlidingExpiration)
            {
                sliding = Cache.NoSlidingExpiration;
            }

            DistributedApplication.Cache.Insert(cacheKey, output, cacheDependency, abs, sliding, priority, null);
        }
Beispiel #2
0
        public static bool CanCache(bool cacheableForLoggedInUser)
        {
            if (OutputCache.DisableCache())
            {
                return(false);
            }

            if (User.Current.Id == User.Visitor.Id)
            {
                return(true);
            }

            if (!cacheableForLoggedInUser)
            {
                return(false);
            }

            return(PortalContext.Current.LoggedInUserCacheEnabled);
        }