Asp.Net Gzip Sıkıştırma

Categories Asp NetPosted on

Asp.net ile gzip sıkıştırma yöntemini aramıştım Seo için önemli bir özellik nede olsa. www.csharpnedir.com forumunda karşıma çıktı kullandım gerçekten de işe yarıyor 97 kb lık sayfamı 17 kb a kadar düşürdü alıntı olarak vermek istiyorum sonuçta yapan arkadaş bir başkası.

PageBase Adında bir class oluşturuyoruz.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
public class PageBase : System.Web.UI.Page
{
    protected override void OnLoad(EventArgs e)
    {
        GZipSIKISTIRMA(HttpContext.Current);
        base.OnLoad(e);
    }
    /// 



<summary>
    /// Sıkıştırma uygulayan method
    /// </summary>




    /// <param name="context">O Anki Aktif Context</param>
    public static void GZipSIKISTIRMA(HttpContext context)
    {
        HttpResponse Response = context.Response;
        if (GzipEtkinMi(context))
        {

            string encoding = context.Request.Headers["Accept-Encoding"];
            //deflate sıkıştırmayı destekleyenler için
            if (encoding.Contains("deflate"))
            {
                Response.Filter = new System.IO.Compression.DeflateStream(Response.Filter, System.IO.Compression.CompressionMode.Compress);
                Response.AppendHeader("Content-Encoding", "deflate");
            }
            else
            {
                //Gzip sıkıştırmayı destekleyenler için
                Response.Filter = new System.IO.Compression.GZipStream(Response.Filter, System.IO.Compression.CompressionMode.Compress);
                Response.AppendHeader("Content-Encoding", "gzip");
            }
            //Sıkıştırılmış bilgi tarayıcıya belirtiliyor!
            Response.AppendHeader("Vary", "Content-Encoding");
        }
    }
    /// 



<summary>
    /// Sıkıştırma Destekleniyor mu kontrol et.
    /// </summary>




    /// <param name="context">O Anki aktif Context</param>
    /// <returns>True yada False</returns>
    public static bool GzipEtkinMi(HttpContext context)
    {
        //Tarayıcı sıkıştırma destekliyor mu ?
        string AcceptEncoding = context.Request.Headers["Accept-Encoding"];
        if (!string.IsNullOrEmpty(AcceptEncoding))
        {
            //evet
            return (AcceptEncoding.Contains("gzip") || AcceptEncoding.Contains("deflate"));
        }
        else
        {
            //hayır.
            return false;
        }
    }
}

Yukarıda ki kodlarımız pagebase.cs kodlarımız.Şimdi bütün aspx sayfalarımızda kullanmak istiyorsak eğer

    public class _Default : PageBase
    {
        protected void Page_Load(object s, EventArgs e)
        {


        }
    }

Bu şekilde kullanıyoruz.
Eğer bazı sayfalarda kullanmak istersek de

    protected void Page_Load(object s, EventArgs e)
    {
        PageBase.GZipSIKISTIRMA(HttpContext.Current);

    }

Bu şekilde kullanıyoruz.

BeÄŸendiyseniz PaylaÅŸmak Ä°ster misiniz?

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Bu site, istenmeyenleri azaltmak için Akismet kullanıyor. Yorum verilerinizin nasıl işlendiği hakkında daha fazla bilgi edinin.