GZip με ASP.NET 2.0

Πληροφορίες σχετικές με την ASP, ASP.NET και με τις εφαρμογές που είναι γραμμένες με αυτήν.

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
Άβαταρ μέλους
skeftomilos
Script Master
Δημοσιεύσεις: 2888
Εγγραφή: 07 Ιαν 2005 07:22
Τοποθεσία: Αθήνα

GZip με ASP.NET 2.0

Δημοσίευση από skeftomilos » 16 Απρ 2006 02:11

Η έκδοση 2.0 της ASP.NET έρχεται εφοδιασμένη με δυνατότητες συμπίεσης δεδομένων με δύο τρόπους, GZip και Deflate. Μπορούμε να εκμεταλλευτούμε τα νέα features για να συμπιέσουμε τις aspx σελίδες μας, στην περίπτωση που δυσκολευόμαστε να πείσουμε τον administrator να ενεργοποιήσει την GZip compression του IIS 6. Ο απαιτούμενος κώδικας είναι ελάχιστος:

global.asax (VB)

Κώδικας: Επιλογή όλων

<%@ import Namespace="System.Web" %>

<script language="VB" runat="server">

  Sub Application_PostRequestHandlerExecute&#40;sender As Object, e As EventArgs&#41;
    GZip&#40;&#41;
  End Sub
  
  Private Sub GZip
    If Response.ContentType = "text/html" Then
      Dim browserCompressionCapabilities As String = Request.ServerVariables&#40;"HTTP_ACCEPT_ENCODING"&#41;
      If browserCompressionCapabilities.IndexOf&#40;"gzip", StringComparison.InvariantCultureIgnoreCase&#41; > -1 Then
        Response.AddHeader&#40;"Content-Encoding", "gzip"&#41;
        Response.Filter = New System.IO.Compression.GZipStream&#40;Response.Filter, System.IO.Compression.CompressionMode.Compress, False&#41;
      End If
    End If
  End Sub
  
</script>
global.asax (C#)

Κώδικας: Επιλογή όλων

<%@ import Namespace="System.Web" %>
<script language="C#" runat="server">

  private void Application_PostRequestHandlerExecute&#40;object sender, EventArgs e&#41; &#123;
    GZip&#40;&#41;;
  &#125;
  
  private void GZip&#40;&#41; &#123;
    if &#40;Response.ContentType == "text/html"&#41; &#123;
      string browserCompressionCapabilities = Request.ServerVariables&#91;"HTTP_ACCEPT_ENCODING"&#93;;
      if &#40;browserCompressionCapabilities != null && browserCompressionCapabilities.IndexOf&#40;"gzip", StringComparison.InvariantCultureIgnoreCase&#41; > -1&#41; &#123;
        Response.AddHeader&#40;"Content-Encoding", "gzip"&#41;;
        Response.Filter = new System.IO.Compression.GZipStream&#40;Response.Filter, System.IO.Compression.CompressionMode.Compress, false&#41;;
      &#125;
    &#125;
  &#125;
  
</script>
Έκανα μερικές δοκιμές με τοπικό αντίγραφο του http://www.officeworld.gr, σε συνδυασμό με τη μέθοδο για αφαίρεση των κενών. Τα αποτελέσματα είναι εύγλωττα:

Κώδικας: Επιλογή όλων

Χωρίς συμπίεση        &#58; 33.560 bytes
Αφαίρεση κενών        &#58; 25.759 bytes
GZip                  &#58;  4.715 bytes
GZip + Αφαίρεση κενών &#58;  4.216 bytes
The pure and simple truth is rarely pure and never simple. Ο μη νους δε σκέπτεται μη σκέψεις για το τίποτα.

Απάντηση

Επιστροφή στο “ASP, ASP.NET”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες