我已經寫了非常簡單的縮小/壓縮處理程序,通過指示請求類型(Request.RawUrl.EndsWith("css" || "js")
)縮小css和js,但我不知道一種方法來指示哪個響應類型是html,然後將其作爲HTML內容進行縮減,因爲在mvc中不是擴展來檢查。如何檢測響應內容類型在asp.net mvc
在此先感謝;)
我已經寫了非常簡單的縮小/壓縮處理程序,通過指示請求類型(Request.RawUrl.EndsWith("css" || "js")
)縮小css和js,但我不知道一種方法來指示哪個響應類型是html,然後將其作爲HTML內容進行縮減,因爲在mvc中不是擴展來檢查。如何檢測響應內容類型在asp.net mvc
在此先感謝;)
如果你寫了一個HTTP handler壓縮靜態資源是由你來建立Content-Type
頭基於文件類型:
if (Request.RawUrl.EndsWith("css"))
{
Response.ContentType = "text/css";
}
else if (Request.RawUrl.EndsWith("js"))
{
Response.ContentType = "text/javascript";
}
順便說一句,我會建議你提前縮小/壓縮您的靜態資源,並依靠Web服務器的壓縮和客戶端緩存。如果不是教育目的,我會避免寫這樣的處理程序。
嗯...,我想你誤解了我的目標/問題。這裏有我的處理程序:
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);
}
}
確定,但我想,以檢測是否respnse是HTML輸出,那麼縮小/壓縮,作爲HTML,或者如果respnse是js的則縮小/壓縮,由於JS,或等 – Sadegh 2010-06-20 08:19:29
我的問題是我如何檢測響應是html標記 – Sadegh 2010-06-20 08:20:14
什麼反應?這是您的HTTP處理程序生成響應,不是嗎? – 2010-06-20 08:20:44