
Web sitelerinin daha hızlamasını açılmasını ve site trafiklerinin düşmesi herkes için önemlidir. Ayrıca arama motorları içinde robotların daha hızlı bir şekilde sitelerinizi indexleyebilmesi önemlidir.
Bir web sayfasını açmak üzere tarayıcınıza tıkladığınızda, arkada bir çok şey olur. Bunlardan biri de, isteğin hangi formatta olacağına
karar verilmesidir. Bir web sayfası açmaya çalıştığınızda tarayıcınız sizin için aşağıdakine benzer bir bilgi gönderir.Eğer dosyalarınızı sıkıştırırsanız bu size hem performans açısından hem de Seo açısından büyük kolaylık
sağlayacaktır.
Gönderdiğiniz bilgilerden Accept:
*/* ve Accept-Encoding: gzip,deflate satırlarına dikkatinizi çekmek istiyorum. Accept, istemcinin (yani tarayıcınızın) kabul ettiği MIME (Multipurpose Internet Mail Extensions) tiplerini, Accept-Encoding ise kabul ettiği kodlama biçimlerini gösterir.
Tarayıcınız sizin adınıza gzip ve deflate algoritmaları ile sıkıştırılmış verileri kabul ettiğini gönderiyor.
Gzip, özellikle metinlerde etkili bir algoritmadır. Aynı zamanda sıkıştırma/açma hızı yüksek bir algoritma olduğundan sıkça tercih edilir. Ben veritabanı yedeklerimi sunucumdan gzip ile sıkıştırılmış olarak çekiyorum. Bir veritabanından gelen metin tabanlı veriyi 4 te biri oranına kadar düşürebilmektedir.. Mesala benim 92 Kb’lık açılış büyüklüğüne sahip olan sayfamı 26 Kb’ a kadar küçülttü. Web’de CSS, HTML ve JavaScript dosyalarında bu kadar sık kullanışmasının nedeni de tam olarak bu performans.
Asp.Net için Yapılması Gerekenler
Global.asax
dosyamıza aşağıdaki değişiklikleri yapmamız gerekmektedir.
***************************************************************************************************************************************
<script runat=”server”> void Application_PreRequestHandlerExecute(object sender, EventArgs e) { HttpApplication app = sender as HttpApplication; string acceptEncoding = app.Request.Headers[“Accept-Encoding”]; Stream prevUncompressedStream = app.Response.Filter;
if (!(app.Context.CurrentHandler is Page || app.Context.CurrentHandler.GetType().Name == “SyncSessionlessHandler”) || app.Request[“HTTP_X_MICROSOFTAJAX”] != null) return;
if (acceptEncoding == null || acceptEncoding.Length == 0) return;
acceptEncoding = acceptEncoding.ToLower();
if (acceptEncoding.Contains(“deflate”) || acceptEncoding == “*”) { // defalte app.Response.Filter = new DeflateStream(prevUncompressedStream, CompressionMode.Compress); app.Response.AppendHeader(“Content-Encoding”, “deflate”); } else if (acceptEncoding.Contains(“gzip”)) { // gzip app.Response.Filter = new GZipStream(prevUncompressedStream, CompressionMode.Compress); app.Response.AppendHeader(“Content-Encoding”, “gzip”); } } </script>
Global.asax dosyamız içerisinde tüm işlemleri Application_PreRequestHandlerExecute methodu içersinde yürütüyoruz.
void Application_PreRequestHandlerExecute(object sender, EventArgs e)
{
…
}
elaman çoğunlukla ajax – asp.net sayfalarında kullanılır. Burada kendimizi güvence altına alıyoruz. Asp.net içeriği sıkıştırıldığı zamanda eğer ajax o an kullanılıyorsa. Sayfa hata verecektir. Bunun için ajax ın aktif olmadığı anı bilebilmemiz gerekiyor.En sonunda “Accept-Encoding” başlığını kontrol edebileceğiz. Eğer burada boş bir değer alırsak bu bize tarayıcımızın bunu desteklemediği bilgisini verecek. acceptEncoding başlığı için deflate değerimizi aramaya başlayabiliriz artık.***************************************************************************************************************************************
