Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在Asp.NETWebForm中压缩JavaScript和CSS_C#_Asp.net_Gzip - Fatal编程技术网

C# 在Asp.NETWebForm中压缩JavaScript和CSS

C# 在Asp.NETWebForm中压缩JavaScript和CSS,c#,asp.net,gzip,C#,Asp.net,Gzip,我使用C#Asp.net 4, 我在Global.asax中有这个脚本。我能够gzip所有asp.net页面,但不能gzip Java脚本和CSS。 我想知道是否有可能压缩CSS和JS直接在我的web应用程序或它可能只是在IIS。如果可能的话,请指出我在代码中遗漏了什么。 谢谢 您可以而且应该设置IIS来压缩静态文件。让IIS在它进入你的应用程序之前处理它 您可以在IIS管理控制台中手动设置,或使用web.config中的设置。您确定ASP.NET运行时处理了*.css和*.js吗?默认情况下不

我使用C#Asp.net 4, 我在Global.asax中有这个脚本。我能够gzip所有asp.net页面,但不能gzip Java脚本和CSS。 我想知道是否有可能压缩CSS和JS直接在我的web应用程序或它可能只是在IIS。如果可能的话,请指出我在代码中遗漏了什么。 谢谢


您可以而且应该设置IIS来压缩静态文件。让IIS在它进入你的应用程序之前处理它


您可以在IIS管理控制台中手动设置,或使用web.config中的
设置。

您确定ASP.NET运行时处理了*.css和*.js吗?默认情况下不是这样,例如,您必须在
web.config
中将
runAllManagedModulesForAllRequests
设置为
true


另外,为什么不依赖IIS内置压缩?

提前缩小并压缩CSS和JS,同时将所有JS合并到一个文件中,并将所有CSS合并到一个文件中:


如果您稍微搜索一下,就会发现各种方法可以自动压缩和缩小到生成后流程或CI生成流程中。

是的,我们可以利用IIS 7.0压缩功能。此外,您还非常关心性能,在应用程序中创建一个JS和一个CSS总是更好的,如果不可能,那么最好将这些JS和CCS合并到一个JS和CSS中。而且它总是推荐给我们AJAX Minifier

如果您在这方面需要更多帮助,请随时与我联系

谢谢, 希曼苏石哈尔萨胡
www.mindfiresolutions.com

谢谢,我不知道。。。也可以直接在IIS中剥离(缩小)css和js吗?你是说?IIS内置压缩仅对静态内容有效。。甚至对于动态页面?如果是这样,我应该从Global.asax中删除我的脚本吗?SIIS 7同时压缩静态和动态数据。imho,坚持使用内置压缩听起来是个更好的主意。我也很喜欢microsoft ajax minifier可能会有用。谢谢你的评论。因此,您是否建议我从Global.asax文件中删除代码,而使用II7功能压缩静态和动态内容?是的,如果您使用的是IIS 7/7.5,则绝对不需要。请通过下面的链接了解更多信息。@Gibbok是的,如果您使用的是IIS 7/7.5,则绝对不需要。请通过下面的链接了解更多信息。如果您使用的是任何.axad,并且要去除文件中的空白,建议创建一个HTTPHandler来处理这些空白。
protected void Application_PreRequestHandlerExecute(object sender, EventArgs e)
    {
        HttpApplication app = sender as HttpApplication;
        string acceptEncoding = app.Request.Headers["Accept-Encoding"];
        Stream prevUncompressedStream = app.Response.Filter;

        if (!(app.Context.CurrentHandler is Page ||
            app.Context.CurrentHandler.GetType().Name == "SyncSessionlessHandler") ||
            app.Request["HTTP_X_MICROSOFTAJAX"] != null)
            return;

        if (acceptEncoding == null || acceptEncoding.Length == 0)
            return;

        acceptEncoding = acceptEncoding.ToLower();

        // if (acceptEncoding.Contains("deflate") || acceptEncoding == "*")
        if (acceptEncoding.Contains("gzip") || acceptEncoding == "*")
        {
            // gzip
            app.Response.Filter = new GZipStream(prevUncompressedStream,
                CompressionMode.Compress);
            app.Response.AppendHeader("Content-Encoding", "gzip");

        }
        // else if (acceptEncoding.Contains("gzip"))
        else if (acceptEncoding.Contains("deflate"))
        {
            // defalte
            app.Response.Filter = new DeflateStream(prevUncompressedStream,
            CompressionMode.Compress);
            app.Response.AppendHeader("Content-Encoding", "deflate");
        }
    }