2010-06-20 21 views
0

J'ai écrit un gestionnaire de minimisation/compression très simple qui minimise css et js en indiquant le type de requête (Request.RawUrl.EndsWith("css" || "js")), mais je ne connais pas d'approche pour indiquer quelle réponse type est html et puis réduisez cela au format HTML car dans mvc n'est pas l'extension à vérifier.comment détecter le type de contenu de réponse dans asp.net mvc

grâce à l'avance;)

Répondre

1

Si vous avez écrit un HTTP handler pour compresser les ressources statiques, il est à vous de mettre en place l'en-tête Content-Type en fonction du type de fichier:

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

Btw Je vous recommande Pour réduire/compresser vos ressources statiques à l'avance et compter sur la compression gzip du serveur Web et la mise en cache du client. J'éviterais d'écrire de tels gestionnaires si ce n'est pas à des fins éducatives.

+0

ok, mais je veux détecter si respnse est sortie html puis rapetisser/compriment que html, ou si respnse est js alors rapetisser/compriment que js, ou etc – Sadegh

+0

mon problème est comment je peux détecter la réponse est le balisage html – Sadegh

+0

Quelle réponse? C'est votre gestionnaire HTTP qui génère la réponse, n'est-ce pas? –

0

hm ..., je pense que vous avez mal compris mon but/problème. voici mon gestionnaire:

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