как определить тип содержимого ответа в asp.net mvc - PullRequest
0 голосов
/ 20 июня 2010

Я написал очень простой обработчик минимизации / сжатия, который минимизирует css и js, указывая тип запроса (Request.RawUrl.EndsWith("css" || "js")), но я не знаю подход, чтобы указать, какой тип ответа html, а затем минимизировать его как HTML содержание, потому что в MVC не расширение для проверки.

спасибо заранее;)

Ответы [ 2 ]

1 голос
/ 20 июня 2010

Если вы написали обработчик HTTP для сжатия статических ресурсов, вы можете установить заголовок Content-Type на основе типа файла:

if (Request.RawUrl.EndsWith("css"))
{
    Response.ContentType = "text/css";
} 
else if (Request.RawUrl.EndsWith("js"))
{
    Response.ContentType = "text/javascript";
}

Кстати, я бы порекомендовалвам нужно заранее минимизировать / сжать статические ресурсы и полагаться на gzip сжатие веб-сервера и кэширование клиента.Я бы не стал писать такие обработчики, если это не в образовательных целях.

0 голосов
/ 20 июня 2010

хм ..., я думаю, вы неправильно поняли мою цель / проблему.вот мой обработчик:

 public void ProcessRequest(HttpContext context)
    {
        if (Preferences.EnableHtmlMinification && **IfResponseContentIsHtml**)
        {
             //Do minify here
        }
        if (Preferences.EnableHtmlCompression && **IfResponseContentIsHtml**)
        {
            acceptEncoding = acceptEncoding.ToLower(CultureInfo.InvariantCulture);
            if (acceptEncoding.Contains("gzip"))
            {
                response.Filter = new HtmlCompressStream(response.Filter, CompressionMode.Compress, HtmlCompressStream.CompressionType.GZip);
                response.AddHeader("Content-encoding", "gzip");
            }
            else if (acceptEncoding.Contains("deflate"))
            {
                response.Filter = new HtmlCompressStream(response.Filter, CompressionMode.Compress, HtmlCompressStream.CompressionType.Deflate);
                response.AddHeader("Content-encoding", "deflate");
            }
        }
        else
        {
            response.Filter = new HtmlCompressStream(response.Filter, CompressionMode.Compress, HtmlCompressStream.CompressionType.None);
        }
    }
...