/// <summary> /// Gets a processed asset content /// </summary> /// <param name="assetVirtualPath">Virtual path of asset</param> /// <param name="bundleVirtualPath">Virtual path of bundle</param> /// <returns>Text content of asset</returns> private string GetProcessedAssetContent(string assetVirtualPath, string bundleVirtualPath) { if (string.IsNullOrWhiteSpace(assetVirtualPath)) { throw new ArgumentException( string.Format(Strings.Common_ArgumentIsEmpty, nameof(assetVirtualPath)), nameof(assetVirtualPath) ); } string content; if (_assetHandlerConfig.DisableServerCache) { IAsset processedAsset = ProcessAsset(assetVirtualPath, bundleVirtualPath); content = processedAsset.Content; } else { lock (_cacheSynchronizer) { string cacheItemKey = GetCacheKey(assetVirtualPath, bundleVirtualPath); object cacheItem = _cache.Get(cacheItemKey); if (cacheItem != null) { content = (string)cacheItem; } else { IAsset processedAsset = ProcessAsset(assetVirtualPath, bundleVirtualPath); content = processedAsset.Content; DateTime utcStart = DateTime.UtcNow; DateTime absoluteExpiration = DateTime.Now.AddMinutes( _assetHandlerConfig.ServerCacheDurationInMinutes); TimeSpan slidingExpiration = Cache.NoSlidingExpiration; var fileDependencies = new List <string> { assetVirtualPath }; fileDependencies.AddRange(processedAsset.VirtualPathDependencies); var cacheDep = _virtualFileSystemWrapper.GetCacheDependency(assetVirtualPath, fileDependencies.ToArray(), utcStart); _cache.Insert(cacheItemKey, content, cacheDep, absoluteExpiration, slidingExpiration, CacheItemPriority.Low, null); } } } return(content); }