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 cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

This site uses Akismet to reduce spam. Learn how your comment data is processed.