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.