20
2011
.htacces ile zahmetsiz sunucu konfigürasyonu: Bandwidth optimizasyonu
Bandwidth(band genişliği) kavramı, bir sitenin anlık ya da toplamdaki data transfer limitini ifade eder. Kimi hosting paketleri için kullanılan “sınırsız anlık trafik” ifadesi aslında tam olarak gerçeği yansıtmamaktadır. Host edilen her site için, server’ın kullandığı internet altyapısına bağlı olarak bir band genişliği limiti sözkonusudur. Dolayısıyla, sağlanan anlık trafik değerinin büyüklüğünün “sınırsız” olarak ifade edilmesi, bizi yanıltmamalı.
Bu gün sizlere htaccess yardımıyla, sitemize sağlanan sınırlı ya da “sınırsız” dahi dense bir limiti olan band genişliğini verimli kullanmak adına gerçekleştirebileceğimiz düzenlemelerden bahsedeceğim.
Hotlink koruması
Hotlik kısaca, başka bir sunucuda bulunan içeriğin görüntülenmesi/download edilmesidir. Örnek verecek olursak, www.siteadi.com isminde bir sitemiz ve site dizin yapısı içinde, images klasörü altında htaccess.gif isminde bir gif dosyamız olduğunu farz edelim.
Başka bir sunucuda barındırılan bir dosya içinden bu resmin aşağıda görüldüğü şekilde görüntülenmesi işlemi hotlink olarak ifade edilmektedir.
Bu şekilde bir başka sunucudan yapılan taleplere cevap veren, sitenizin barındırıldığı sunucu olduğundan, oluşan trafik site band genişliğinizden yapılmış bir harcamadır. Bir başka deyiş ile bu şekilde başka siteler, sitenize ait band genişliğini kullanmaktadır. Hotlink isteklerini önlemek için yapılması gereken, htaccess dosyasına aşağıdaki kodları eklemekten ibarettir.
#sadece kendi sitemize izin veriyoruz
RewriteCond %{HTTP_REFERER} !^http://(.+\.)?siteadi\.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://(.+\.)?siteadi\.com$ [NC]
#hangi tür dosyaların görüntülenemeyeceğini ve talep geldiğinde gösterilecek görseli belirliyoruz
RewriteRule .*\.(jpe?g|gif|bmp|png|zip|wma|swf|avi|rar|mpg|mp3)$ http://www.siteadi.com/nohotlink.gif [L]
Site kök dizininde bu yönergelere sahip htaccess dosyasıyla www.siteadi.com sitesi, htaccess dosyasında belirtilen türde içeriğin başka sitelerce görüntülenme ve download edilmesini engelledi, site band genişliğinin başka sitelerce tüketimine engel oldu.
GZip sıkıştırması
Site band genişliğinin optimizasyonu için veri sıkıştırma yöntemi de oldukça faydalı sonuçlar vermektedir. Bu yöntem aynı zamanda talep edilen verinin sıkıştırılması yani boyutunun küçülmesi sebebi ile, site yanıt/response hızını da artırmaktadır.
Gzip, GNU yazılımı dosya sıkıştırma programıdır. Apache sunucularında gzip sıkıştırması için kullanılacak yapılandırma modülü, Apache’nin sürümüne bağlı olarak değişmektedir. Apache’nin 2.x numaralı sürümleri mod_deflate kullanırken, 1.3.x numaralı sürümleri mod_gzip modülünü kullanır.
Ben bu gün, 2.x numaralı sürümler için geçerli yönergeleri anlatmaya çalışacağım.
SetOutputFilter DEFLATE
#sıkıştırılmayacak formatları belirliyoruz
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary
SetEnvIfNoCase Request_URI \.(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary
Yukarıdaki yönergelere dikkat edilirse, öncelikle deflate modülünün etkin olup olmadığı kontrol ediliyor. Ardından “SetOutputFilter DEFLATE” yönergesi ile, sıkıştırma filtresi olarak DEFLATE filtresi set ediliyor.
Ardından gelen iki satırda, hangi tür dosyaların sıkıştırılmayacağı belirtiliyor. Burada belirtilen uzantılar, zaten sıkıştırılmış formatlar olduğundan, sunucumuzu gereksiz sıkıştırma işlemlerinden koruyor ve sunucumuza, belirtilen türler dışında kalan dosyaları sıkıştırması için DEFLATE filtresini kullanmasını söylemiş oluyoruz.
Bu şekilde aktive edilen gzip sıkıştırmasının çalışmasını ve gerçekleştirilen sıkıştırma boyutunu http://www.gidnetwork.com/tools/gzip-test.php adresinden kontrol edebilirsiniz.
Burada “deflate modülü etkin değil ise ne yapabiliriz?” sorusu akla gelebilir. Bu durumda yapılabilinecekler, hosta müdahale imkanınızın olup olmamasına bağlı olarak ikiye ayrılıyor. Eğer ilgili Apache sürümünü kullanıyor ve ana yapılandırma dosyası httpd.conf‘a müdahale imkanınız oluyorsa, yapmanız gereken şey, bu dosya içinde aşağıdaki satırı bulmak ve başında yer alan diyez sembolünü kaldırıp, dosyayı kaydedip, Apache sunucusunu yeniden başlatmaktan ibarettir.
#LoadModule deflate_module modules/mod_deflate.so
Eğer böyle bir şansınız yoksa, htaccess dosyası ile gerçekleştirilen kadar verimli sonuçlar doğurmasa da, ikinci bir seçenek olarak, sıkıştırılmasını istediğimiz dosyaların ilk satırına “ob_start(“ob_gzhandler”);” satırını ekleyerek, gzip sıkıştırmasını PHP kodu ile de gerçekleştirebiliriz.
ob_start("ob_gzhandler");
Ayrıntılar için bkz: ob_start() ve ob_gzhandler
Benzer Yazılar
Kariyer
- Yazılım Geliştirme Uzmanları
MobilMutfak - Java Yazılım Uzmanı
Yapı Kredi Emeklilik - Java Yazılım Uzmanı
Universal Bilgi Teknolojileri - Yazılım Geliştirmeci ve Proje Mühendisi
Yapı ve Kredi Bankası - Java Yazılım Uzmanı
Abaküs Finansal Yaz. A.Ş








