2010-06-20 33 views
0

我已經寫了非常簡單的縮小/壓縮處理程序,通過指示請求類型(Request.RawUrl.EndsWith("css" || "js"))縮小css和js,但我不知道一種方法來指示哪個響應類型是html,然後將其作爲HTML內容進行縮減,因爲在mvc中不是擴展來檢查。如何檢測響應內容類型在asp.net mvc

在此先感謝;)

回答

1

如果你寫了一個HTTP handler壓縮靜態資源是由你來建立Content-Type頭基於文件類型:

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

順便說一句,我會建議你提前縮小/壓縮您的靜態資源,並依靠Web服務器的壓縮和客戶端緩存。如果不是教育目的,我會避免寫這樣的處理程序。

+0

確定,但我想,以檢測是否respnse是HTML輸出,那麼縮小/壓縮,作爲HTML,或者如果respnse是js的則縮小/壓縮,由於JS,或等 – Sadegh 2010-06-20 08:19:29

+0

我的問題是我如何檢測響應是html標記 – Sadegh 2010-06-20 08:20:14

+0

什麼反應?這是您的HTTP處理程序生成響應,不是嗎? – 2010-06-20 08:20:44

0

嗯...,我想你誤解了我的目標/問題。這裏有我的處理程序:

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