Esempio n. 1
0
 /// <summary>
 /// Ins the cache.
 /// </summary>
 /// <returns><c>true</c>, if cache was ined, <c>false</c> otherwise.</returns>
 /// <param name="assetbundlename">Assetbundlename.</param>
 internal bool InCache(string assetbundlename)
 {
     return(BundleCache.ContainsKey(assetbundlename));
 }
Esempio n. 2
0
        private string RenderRelease(string key, string renderTo, IRenderer renderer)
        {
            if (!bundleCache.ContainsKey(key))
            {
                lock (bundleCache)
                {
                    if (!bundleCache.ContainsKey(key))
                    {
                        string compressedCss;
                        string hash           = null;
                        bool   hashInFileName = false;

                        dependentFiles.Clear();

                        string outputFile = ResolveAppRelativePathToFileSystem(renderTo);

                        List <string> files = GetFiles(GetFilePaths(cssFiles));
                        files.AddRange(GetFiles(GetEmbeddedResourcePaths(embeddedResourceCssFiles)));
                        dependentFiles.AddRange(files);

                        if (renderTo.Contains("#"))
                        {
                            hashInFileName = true;
                            compressedCss  = CompressCss(outputFile, files, cssCompressorInstance, appendHashForAssets);
                            hash           = hasher.GetHash(compressedCss);
                            renderTo       = renderTo.Replace("#", hash);
                            outputFile     = outputFile.Replace("#", hash);
                        }

                        if (renderOnlyIfOutputFileMissing && FileExists(outputFile))
                        {
                            compressedCss = ReadFile(outputFile);
                        }
                        else
                        {
                            compressedCss = CompressCss(outputFile, files, cssCompressorInstance, appendHashForAssets);
                            renderer.Render(compressedCss, outputFile);
                        }

                        if (hash == null)
                        {
                            hash = hasher.GetHash(compressedCss);
                        }

                        string renderedCssTag;
                        if (hashInFileName)
                        {
                            renderedCssTag = FillTemplate(ExpandAppRelativePath(renderTo));
                        }
                        else
                        {
                            string path = ExpandAppRelativePath(renderTo);
                            if (path.Contains("?"))
                            {
                                renderedCssTag = FillTemplate(path + "&" + hashQueryStringKeyName + "=" + hash);
                            }
                            else
                            {
                                renderedCssTag = FillTemplate(path + "?" + hashQueryStringKeyName + "=" + hash);
                            }
                        }
                        renderedCssTag = String.Concat(GetFilesForRemote(), renderedCssTag);
                        bundleCache.AddToCache(key, renderedCssTag, dependentFiles);
                    }
                }
            }
            return(bundleCache.GetContent(key));
        }