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.