Comment compresser le JavaScript et le CSS en utilisant la compression gzip dans l'application web Asp .Net 3.5? La compression Gzip entraîne une erreur dans le menu CSS et les scripts de validation.Comment compresser le JavaScript et le CSS en utilisant la compression gzip dans une application Web Asp .Net 3.5?
Répondre
Téléchargez l'exemple de compression gzip et ajoutez-le à votre fichier Global.asax.
Ajoutez le code ci-dessous à Global.asax et placez-le dans votre répertoire racine.
<%@ Application Language="C#" %>
<%@ Import Namespace="System.IO" %>
<%@ Import Namespace="System.IO.Compression" %>
<script runat="server">
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 == "*")
{
// defalte
app.Response.Filter = new DeflateStream(prevUncompressedStream,
CompressionMode.Compress);
app.Response.AppendHeader("Content-Encoding", "deflate");
} else if (acceptEncoding.Contains("gzip"))
{
// gzip
app.Response.Filter = new GZipStream(prevUncompressedStream,
CompressionMode.Compress);
app.Response.AppendHeader("Content-Encoding", "gzip");
}
}
</script>
Pourquoi n'utilisez-vous pas HttpCompression? Cela vous permettrait de compresser tout le contenu statique, y compris les fichiers javascript et CSS.
(Je l'ai utilisé cette technique pour un certain temps - d'où le code vb.net!)
Bien que la compression ne soit pas pris en charge par IIS 6.0, la plupart des navigateurs supporte la compression gzip de base et avertit le serveur de cette capacité en envoyant un en-tête dans chaque requête. Le morceau de code suivant montre comment utiliser l'espace de noms System.IO.Compression pour ajouter un filtre au flux de sortie qui compresse la sortie tout en vérifiant et en définissant les en-têtes corrects.
context.Response.Clear()
context.Response.Buffer = True
context.Response.AddHeader("content-disposition", String.Format("attachment;filename={0}", fileName))
context.Response.ContentEncoding = Encoding.UTF8
context.Response.Cache.SetCacheability(HttpCacheability.Private)
'Compress the output as it may be very large
'When flushing or closing+ending the stream, the compression filter does not have a chance to write the compression footer
'Therefore, make sure the compression filter stream is closed before flushing
AddCompression(context)
context.Response.ContentType = "application/vnd.ms-excel" 'This example was an excel doc
'Write to response
context.Response.Write(your-data-here)
'context.Response.Flush() 'Do not flush if using compression
'context.Response.Close()
context.Response.End()
La méthode de AddCompression vérifie les en-têtes appropriés et ajoute un courant de filtre de compression à la sortie:
'Add compression to the response stream
Public Sub AddCompression(ByVal context As HttpContext)
Dim acceptEncoding As String = context.Request.Headers("Accept-Encoding")
If acceptEncoding Is Nothing OrElse acceptEncoding.Length = 0 Then Return
'Convert to lower to check
acceptEncoding = acceptEncoding.ToLower
'Gzip or Compress compression
'Compress compression is quicker and performs better compression so try that first
If (acceptEncoding.Contains("deflate")) Then
context.Response.Filter = New DeflateStream(context.Response.Filter, CompressionMode.Compress)
context.Response.AppendHeader("Content-Encoding", "deflate")
ElseIf acceptEncoding.Contains("gzip") Then
context.Response.Filter = New GZipStream(context.Response.Filter, CompressionMode.Compress)
context.Response.AppendHeader("Content-Encoding", "gzip")
End If
End Sub
- 1. Comment compresser une instance d'objet .net en utilisant gzip
- 2. comment utiliser gzip en ASP classique
- 3. PHP - compresser le fichier css statique avec GZIP
- 4. Comment implémenter la compression GZip dans ASP.NET?
- 5. compression GZIP en PHP
- 6. Javascript et CSS - Compresser et mettre en cache
- 7. Free Web Manager pour Asp .Net 3.5
- 8. Compression en tant que demandes WCF GZip (SOAP et REST)
- 9. Exception de compression Gzip en symbian C++
- 10. Comment utiliser la compression gzip dans apache pour les fichiers html, css et js?
- 11. Comment compresser JSON avec ASP?
- 12. Compresser JS et CSS pendant le déploiement
- 13. Comment compresser les javascript en temps réel?
- 14. IIS 6.0 Compression Gzip dans la page aspx
- 15. compression Gzip ne fonctionne pas sur HTTPS
- 16. Comment puis-je retourner gzip css/js
- 17. La compression GZip (via .net) peut-elle augmenter la taille du fichier?
- 18. GZIP Compression provoquant l'expiration de la page Web
- 19. La compression GZIP ne fonctionnait pas bien pour une donnée de 64K
- 20. Webapp en utilisant ASP/NET et MySQL
- 21. comment utiliser gzip pour un fichier css/js en PHP?
- 22. Impossible de mettre la compression gzip dans JBoss 5
- 23. Définition de la compression gzip dans asp.net
- 24. Résultat de la compression du service Web
- 25. GZIP Compression Issue
- 26. Compresser/décompresser NSString dans l'objectif-c (iphone) en utilisant GZIP ou dégonfler
- 27. En utilisant Entity Framework 4.0 dans un .Net 3.5 Application
- 28. Activer la compression Gzip et définir les durées d'expiration du cache dans CakePHP
- 29. Compression C# et décompression JavaScript
- 30. décoder gzip en utilisant jquery/javascript