icon Blog

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

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

/// 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.


Yorumlar (0)



Yorum Yaz