Projenizi geliştirirken en büyük problemlerden biri olan cache sorununu apache sunucularda kolayca çözebilirsiniz. Tüm geliştirme süresince projenizin root'undaki htaccess dosyanıza css ve js dosyalarının cachelenmemesi için gerekli header'ları tarayıcıya gönderebilirsiniz.

Bu sayede tarayıcı bu dosyaları her aldığında expire olduklarını anlayacak ve her sayfa yenilendiğinde sunucudan tekrar isteyecektir.

Bunun için proje root klasörünüzdeki htaccess dosyanıza (yoksa oluşturun)



Header set Cache-Control "max-age=0, public"
Header set Expires "Thu, 15 Jan 2000 20:00:00 GMT"



satırlarını ekleyin.
DinamiTurk Bildiğiniz gibi youtube artık çocuk oyuncağı gibi açılıp kapanıp duruyor. Komedi gibi bir hal aldı, çeşitli taklalar atarak siteye girebiliyorsunuz fakat o taklaları her yerde her bilgisayarda atmak pek de kolay değil. Bunu aşmak için birçok servis çıkmaya başladı doğal olarak.

http://www.youtubevarmi.com/ pek işe yarayacak bir servis gibi olmasa da eğlenceli ve bu tarz provokatif sitelerin olması da güzel. Haata iyi bir şey.

Youtube videolarını cache'leyip izlemenizi sağlayan bir servishttp://www.soberkoala.com/ youtube video url veya id'sini aratarak videolarını kendi flash playerında izleyebileceğiniz sade bir servis.

DinamiTürk ise youtube ve shoutcast'i 1-1 site olarak cache'leyip gösteren bir site. Elinizdeki youtube adresinde www.youtube.com yerine www.youtube.dinamiturk.com kelimesini ekliyorsunuz ve videonuz karşınızda. Ya da doğrudan youtube'da gezinebilirsiniz.

Oldukça kolay ve pratik bir çözüm.

DNS Nedir?

DNS (Domain Name System) internet sitelerinin adları olan alan adları hakkındaki bilgileri tutar. Ve hosting yani sitelerin barınmalarından ayrı düşünülen bir yapıdır. İnternet tarayıcısı veya herhangi bir istemci (client) ile bir alan adı girdiğinizde, örneğin: tarayıcıdahttp://www.google.com ya da ftp istemcinizdeftp://ftp.deneme.com şeklinde girdiğinizde yapılan ilk işlem bu alan adının nerede barındığını bulmaktır. Bu işi eğer özel bir dns belirtmemişseniz internet servis sağlayıcınız (ISP)'dekivarsayılan DNS'lerden başlayarak internette sorgulamaya başlayacaktır. Siz adresi girdiğinizde tüm internet ağında DNS sunucular birbirlerine "www.bilmemne.com adresini tanıyor musun?" diye soracaktır. Alan adına ait bilgiler bulunduğu takdirde size adres bilgisi dönecektir. Kullandığınız program gelen adres bilgilerini (ip) işleyerek doğrudan o adrese istek gönderip işleminizi yapacaktır.

Günümüzde hattımız ne kadar hızlı olursa olsun eğer iyi bir DNS yapılandırmamız yoksa gereksiz yere saniyeler kaybedebiliriz. Bunu kaldırmak için çeşitli yöntemler geliştirilmiştir fakat en güzeli (benim bildiğim) dns cache yapmaktır. Eğer cache yapan proxy'ler kullanırsanız bunu düşünmenize gerek kalmayacaktır. Fakat cache'lerin yenileniyor olması gibi sorunlarla da karşılaşabiliyorsunuz bazen :-) Sonuç olarak bu dökümanda size local ağınızda dns cache nasıl yapabileceğinizi anlatacağım.

Ubuntu üzerinden anlatacağım fakat proje sayfasına gidip dağıtımınız için olan paketi indirip kurabilir, ya da kaynak kodu derleyip az sonra anlatacağım aracı kullanabilirsiniz.

DNS Cache için Dnsmasq (http://www.thekelleys.org.uk/dnsmasq/doc.html ) aracını kullanacağız. dnsmasq'in kaynak koduna erişmek içinhttp://www.thekelleys.org.uk/dnsmasq/ adresini ziyaret ediniz.

Ubuntu (ya da debian)'da
sudo apt-get install dnsmasq
Gnome için System -> Administration -> Networking menüsünden ulaşacağınız ayar panelinde DNS sekmesinde 127.0.0.1 dns adresini girip en üste taşıyın. Eğer dinamik ip alıyorsanız muhtemelen bir sonraki başlangıçta (boot) bu ayar kaybolacaktır.

/etc/dhcp3/dhclient.conf dosyanızdaki
prepend domain-name-servers 127.0.0.1;
Satırının başındaki "#" karakterini kaldırın ve adresi yukarıdaki gibi yapın. Bundan sonra dns sorgularında ilk önce bilgisayarınızdaki cache'e sorulacaktır.

Ağınızı tekrar başlatıp test ediyoruz. dig komutu ile cevap (response) sürelerini tespit edebiliriz.

İlk önce hiç girilmemiş bir adresi dig'leyelim :
fatih@pingu:~$ dig www.kernel.org

; <<>> DiG 9.3.2 <<>> www.kernel.org
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 6472
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;www.kernel.org.                        IN      A

;; ANSWER SECTION:
www.kernel.org.         451     IN      CNAME   zeus-pub.kernel.org.
zeus-pub.kernel.org.    451     IN      A       204.152.191.37
zeus-pub.kernel.org.    451     IN      A       204.152.191.5

;; Query time: 350 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Thu Feb 15 15:37:55 2007
;; MSG SIZE  rcvd: 87
Şimdi aynı adresi tekrar dig'leyelim ve sonucu yorumlayalım :
fatih@pingu:~$ dig www.kernel.org

; <<>> DiG 9.3.2 <<>> www.kernel.org
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 3770
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;www.kernel.org.                        IN      A

;; ANSWER SECTION:
www.kernel.org.         448     IN      CNAME   zeus-pub.kernel.org.
zeus-pub.kernel.org.    448     IN      A       204.152.191.5
zeus-pub.kernel.org.    448     IN      A       204.152.191.37

;; Query time: 2 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Thu Feb 15 15:37:58 2007
;; MSG SIZE  rcvd: 97
Bakın sondan 4. satırda query time'da dns'den gelen cevap süresini görebiliyoruz. İlk çıktıda benim kullandığım dns'in kernel.org'u bulması 350 milisaniye sürmüş, ancak ikinci sorguda ise 2 milisaniye sürmüş.

Şimdi bu kadar işlemi saniyenin 1/3'ü için mi yapacam diyebilirsiniz fakat kernel.org benim kullandığım dns'in cache'lediği, kullandığım proxy'nin cache'leyip bana gönderdiği süredir. Yani internetteki yoğunluğu beklediğim süredir. Mesela uzakdoğudaki bir alanı bulmaya çalışırsanız bu bırakın milisaniye 5-10 saniyelere hatta bazen 30 saniyelere kadar çıkar. Ancak local dns cache yapıyorsanız bu süre neredeyse 0'a inecektir. Bu süre de işlemci gücünüze ve ne kadar çok cache'lenmiş adres olduğuna bağlıdır fakat bu süre 5-10 milisaniye üstüne çıktığı görülmemiştir :-)

Bu birkaç adreste farkedilmez fakat günlük girdiğiniz sunucularda gözle görülür hız farkına rastlayacaksınız. Mesela her google.com yazdığınızda dns response süresi beklersiniz. Her seferinde istek ve cevap için vakit kaybedersiniz.

Hızlı Surfler


Hazırlayan : Mehmet Fatih YILDIZ

Popüler Etiketler

applications macosx free örnek kod svn subversion proje php coding htaccess mod_rewrite url cookie javascript assets html apple js jquery plugin box less twitter bootstrap css css3 html5 ios itunes mobile app banner wordpress dokuman kontrol yapıları if while pear mdb2 db database mysql mssql pgsql ui ux icons social sql injection date tarih portfolio rss xml export ie support browser job spam media sosyal kitap design development nedir mootools textarea gimp language imza signature mail prepare execute blog xhtml wanda digital tool workspace lifestream mfyz form button cms optimizasyon input select medya facebook query apache server wireless switch ipucu google network developer ipad iphone diff zaman route router istatistik firefox sitemap generator link laptop notebook widget browsers table player license lisans ubuntu ruffles doritos kampanya download api statistics insanlar ajax http seo opengraph optimization fql linux konsol login xmlhttprequest object search radio style connect compile compiler windows on-the-fly session analyse procedure tytz cache code internet explorer meta icon ikon grafik startups music framework open source ide editor phpstorm jetbrains deployment version control git kurulum nasıl logo iOS webkit web app calendar oyun tebrik chart graph osx www subdomain redirect crossdomain pharma hack parse terminal integration service howto share auth regex ntfs fstab newsletter subscription internet screen app store store in-app purchase purchase verification storekit itunes connect