Сжатие JavaScript и CSS в Asp.Net WebForm - PullRequest
4 голосов
/ 06 октября 2011

Я использую C # Asp.net 4, У меня есть этот скрипт в Global.asax. Я могу сжать все страницы asp.net, но не JavaScripts и CSS. Я хотел бы знать, возможно ли сжатие CSS и JS непосредственно в моем веб-приложении или это возможно только в IIS. Если возможно, пожалуйста, укажите мне, что мне не хватает в моем коде. Спасибо

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");
        }
    }

Ответы [ 4 ]

1 голос
/ 06 октября 2011

Вы уверены, что * .css и * .js обрабатываются средой выполнения ASP.NET? Они не по умолчанию, вам, например, придется установить runAllManagedModulesForAllRequests на true в web.config.

Кроме того, почему вы не полагаетесь на встроенное сжатие IIS?

1 голос
/ 06 октября 2011

Заранее сократите и скопируйте ваши CSS и JS, а также объедините все JS в одном файле и все CSS в одном файле:

Онлайн сжатие JavaScript / CSS с использованием YUI Compressor

Если вы выполните небольшой поиск, вы найдете все способы автоматизации сжатия и минимизации в процесс после сборки или процесс сборки CI.

0 голосов
/ 06 октября 2011

Да, мы можем воспользоваться преимуществами сжатия IIS 7.0.Кроме того, вы действительно обеспокоены производительностью, всегда лучше создать один JS и один CSS в ваших приложениях, если это невозможно, лучше объединить эти JS и CCS в один Js и CSS.А также нам всегда рекомендуется AJAX Minifier.

http://www.mindfiresolutions.com/How-to-merge-your-Javascript-files-in-ASPNET-1221.php

http://www.mindfiresolutions.com/How-to-merge-CSS-files-in-ASPNET-1230.php

Пожалуйста, не стесняйтесь обращаться ко мне, если вам нужна дополнительная помощь в этом.

Спасибо, Химаншу Шекхар Саху www.mindfiresolutions.com

0 голосов
/ 06 октября 2011

Вы можете и должны настроить IIS для сжатия статических файлов.Позвольте IIS справиться с этим еще до того, как оно попадет в ваше приложение.

Вы можете установить это вручную в консоли управления IIS или использовать параметр <httpCompression> в файле web.config.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...