public static SpeedyAssetLinks GenerateDeferedLinks(IThemesProvider themesProvider) { if (AssetContentRefresher.IsPublishing() || IsAddingRendering()) { return(new SpeedyAssetLinks()); } var assetsGenerator = new SpeedyAssetLinksGenerator(); var links = assetsGenerator.GenerateSpeedyAssetLinks(themesProvider); var linkSpeedy = new SpeedyAssetLinks(links); var AreScriptsDeferred = SpeedyGenerationSettings.IsCriticalJavascriptEnabledAndPossible(Sitecore.Context.Item); if (AreScriptsDeferred) { string deferredSriptsCacheKey = $"speedy-deferred-page-scripts-{Sitecore.Context.Item.ID}"; string preloadSriptsCacheKey = $"speedy-preload-page-scripts-{Sitecore.Context.Item.ID}"; string deferredSriptsCache = HttpContext.Current.Cache[deferredSriptsCacheKey] as string; string preloadSriptsCache = HttpContext.Current.Cache[preloadSriptsCacheKey] as string; if (SpeedyGenerationSettings.IsDebugModeEnabled()) { deferredSriptsCache = null; preloadSriptsCache = null; } if (!string.IsNullOrWhiteSpace(deferredSriptsCache) && !string.IsNullOrWhiteSpace(preloadSriptsCache)) { linkSpeedy.ClientScriptsRendered = deferredSriptsCache; linkSpeedy.ClientScriptsPreload = preloadSriptsCache; } else { assetsGenerator.GenerateSpeedyScripts(linkSpeedy); CacheObject(deferredSriptsCacheKey, linkSpeedy.ClientScriptsRendered, GetDependencies(null)); CacheObject(preloadSriptsCacheKey, linkSpeedy.ClientScriptsPreload, GetDependencies(null)); } } else { var linksa = AssetLinksGenerator.GenerateLinks(new ThemesProvider()); linkSpeedy.Scripts = linksa.Scripts; } return(linkSpeedy); }
public virtual SpeedyAssetLinks GenerateSpeedyAssetLinks(IThemesProvider themesProvider) { AssetsArgs assetsArgs = new AssetsArgs(); CorePipeline.Run("assetService", assetsArgs); string text = GenerateCacheKey(assetsArgs.GetHashCode()) + "speedylinks-" + Sitecore.Context.Item.ID; SpeedyAssetLinks assetLinks = HttpContext.Current.Cache[text] as SpeedyAssetLinks; if (SpeedyGenerationSettings.IsDebugModeEnabled()) { assetLinks = null; } if (assetLinks == null || _configuration.RequestAssetsOptimizationDisabled) { assetLinks = new SpeedyAssetLinks(); if (!assetsArgs.AssetsList.Any()) { return(assetLinks); } assetsArgs.AssetsList = (from a in assetsArgs.AssetsList orderby a.SortOrder select a).ToList(); foreach (AssetInclude assets in assetsArgs.AssetsList) { if (assets is ThemeInclude) { AddThemeIncludeSpeedy(assets as ThemeInclude, assetLinks, themesProvider); } else if (assets is UrlInclude) { AddUrlIncludeSpeedy(assets as UrlInclude, assetLinks); } else if (assets is PlainInclude) { AddPlainInclude(assets as PlainInclude, assetLinks); } } CacheLinks(text, assetLinks, GetDependencies(this.DatabaseRepository)); } return(assetLinks); }
public virtual SpeedyAssetLinks GenerateSpeedyAssetLinks(IThemesProvider themesProvider) { AssetsArgs assetsArgs = new AssetsArgs(); CorePipeline.Run("assetService", assetsArgs); string text = GenerateCacheKey(assetsArgs.GetHashCode()) + "speedylinks"; SpeedyAssetLinks assetLinks = HttpContext.Current.Cache[text] as SpeedyAssetLinks; if (assetLinks == null || _configuration.RequestAssetsOptimizationDisabled) { assetLinks = new SpeedyAssetLinks(); if (!assetsArgs.AssetsList.Any()) { return(assetLinks); } assetsArgs.AssetsList = (from a in assetsArgs.AssetsList orderby a.SortOrder select a).ToList(); foreach (AssetInclude assets in assetsArgs.AssetsList) { if (assets is ThemeInclude) { AddThemeIncludeSpeedy(assets as ThemeInclude, assetLinks, themesProvider); } else if (assets is UrlInclude) { AddUrlIncludeSpeedy(assets as UrlInclude, assetLinks); } else if (assets is PlainInclude) { AddPlainInclude(assets as PlainInclude, assetLinks); } } CacheLinks(text, assetLinks, (DatabaseRepository.GetContentDatabase().Name.ToLower() == GlobalSettings.Database.Master) ? AssetContentRefresher.MasterCacheDependencyKeys : AssetContentRefresher.WebCacheDependencyKeys); } return(assetLinks); }
public static SpeedyAssetLinks GenerateDeferedLinks(IThemesProvider themesProvider) { if (AssetContentRefresher.IsPublishing() || IsAddingRendering()) { return(new SpeedyAssetLinks()); } var assetsGenerator = new SpeedyAssetLinksGenerator(); var links = assetsGenerator.GenerateSpeedyAssetLinks(themesProvider); var linkSpeedy = new SpeedyAssetLinks(links); var AreScriptsDeferred = SpeedyGenerationSettings.IsCriticalJavascriptEnabledAndPossible(Sitecore.Context.Item); if (AreScriptsDeferred) { assetsGenerator.GenerateSpeedyScripts(linkSpeedy); } else { var linksa = AssetLinksGenerator.GenerateLinks(new ThemesProvider()); linkSpeedy.Scripts = linksa.Scripts; } return(linkSpeedy); }
protected virtual void AddThemeIncludeSpeedy(ThemeInclude themeInclude, AssetLinks result, IThemesProvider themesProvider) { Item item = themeInclude.Theme; if (item == null && !themeInclude.ThemeId.IsNull) { item = ContentRepository.GetItem(themeInclude.ThemeId); } if (item != null) { Log.Debug($"Starting optimized files generation process for {item.Name} with following configuration {_configuration}"); IList <Item> allThemes = ServiceLocator.ServiceProvider.GetService <IThemingContext>().GetAllThemes(item); GetLinksSpeedy(allThemes.FilterBaseThemes(), _configuration.ScriptsMode, _configuration.StylesMode, result); GetLinksSpeedy(themesProvider.GetThemes(item, allThemes), _configuration.ScriptsMode, _configuration.StylesMode, result); } }