Bu yazı, usenet'teki kablo internetle evden sunucuyla hizmet vermeye ilişkin yazışmalarda sorun olarak görülen, 32KBps'lik upload bandgenişliğinin verimli kullanımına ilişkin bir çözümü anlattığım bir epostadan derlenmiştir.
<hamidin@kankateam.com> wrote:
>Selamlar sorulara cevaplar...
>Yaklaşık 2 aydır slackware 7.0 ustunde apache server kullanarak
kablonet
>bağlantımla kendi domainimi host ediyorum.
...
>tabi uyarmadanda geçemeyeceğim . kablonetin şanslı kullanıclarından
>değilseniz 32 kbit upload hızınız ile ( gerçek olan budur ) yaklaşık 4 k
sec
>çıkışınız var olacak demektir . Hiç uğraşmayın bu durumda derim
>
Apache sunucuda Expires tanimlamalarini acarak baglanti darbogazini ve
sunucuyu bir nebze olsun rahatlatmak mumkun.
Bu tanimlamalarla sunucunun her dokumanla birlikte o dokumanin ne kadar sure
daha degismeden kalacagi bilgisini yollayabilirsiniz. Boylece tarayicilar
onbelleklerindeki dokumanlari hic sunucuya onaylattirmadan (IMS =
if-modified-since hikayesi) gosterebilirler.
Expires basligi gonderilmesini saglamak icin asagidaki satirlari httpd configuration dosyasina modul tanimlamalarindan sonra uygun bir yere, kendi sunucu guncelleme aliskanliklariniza gore sureleri ayarlayarak, girebilirsiniz:
# Expires basligi
<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 30 days"
ExpiresByType image/gif "access plus 50 days"
ExpiresByType image/jpeg "access plus 50 days"
ExpiresByType text/html "access plus 7 days"
ExpiresByType text/plain "access plus 7 days"
</IfModule>
Buradaki komutlarin ayrintili aciklamalari apache dokumaninda mod_expires kisminda var. Kisaca komutlar soyle:
ExpiresByType ile turlerine gore cesitli dokumanlarin ne kadar sureyle gecerli
olduklarni/degismediklerini tanimliyoruz. Zaman belirtimindeki "access" yerine
"modification" da diyebilirdik. access ile gecerlilik bilgisi o andan itibaren
hesap ediliyor. Digeri ise dosyanin degistirilme tarihi uzerinden hesap ediyor
Expires basligini.
ExpiresDefault ise onceki ile tanimlanmamis diger dokumanlarin varsayilan
gecerlilik surelerini belirliyor.
Zaman tanimlamalarinda minutes hours days .. years kullanilabiliyor.
Bu arada bir hatirlatma: touch komutuyla dosyalarin degistirilme tarihlerini degistirebiliyoruz. Ornegin Expires kullanmayacaksak/kullanamiyorsak degistirilme tarihinini birkac yil onceye ayarlayabiliriz proxyler bu tarihe bakarak bir gecerlilik suresi tahmininde bulunuyor.
Kisaca bu ayarlari ve hileleri iyi kullanarak 32K'lik veya dial-up 33.6K'lik
bandwidth darbogazi sorununu asabilmek mumkun. Sonucta onbelleklerin ve
proxy'lerin hit yuzdesini arttiriyor.
Asagiya Expires baslikli bir "htttp request" ornegi aldim. Yukaridaki
tanimlamalar sayesinde "Cache-Control:" ve "Expires:" tag'lari da baslikla
birlikte gonderilmeye baslandi.
bash-2.03# telnet gk.ods.org 80
Trying 127.0.0.1...
Connected to gk.ods.org.
Escape character is '^]'.
HEAD /robotech/ HTTP/1.0
HTTP/1.1 200 OK
Date: Tue, 11 Jul 2000 06:49:22 GMT
Server: Apache/1.3.6 (Unix) (SuSE/Linux)
Cache-Control: max-age=604800
Expires: Tue, 18 Jul 2000 06:49:22 GMT
Last-Modified: Tue, 13 Jun 2000 01:11:21 GMT
ETag: "f5f6f-1032-39458a39"
Accept-Ranges: bytes
Content-Length: 4146
Connection: close
Content-Type: text/html
Connection closed by foreign host.
>Hamidin..
Kullanacaklara basarilar,
hoscakalin.
--
Web sunucusuna müdahale edemeyenler, bedava web alanı sağlayan servisleri kullananlar da tek satırlık bir html eklentisiyle sayfalarının browser cache'lerinde daha uzun tutulmasını, dolayısıyla sitelerinin hızlı açılmasını sağlayabilirler.
Sitenizin statik, sıklıkla değişmeyen sayfalarının expires sürelerini elle belirtebilirsiniz. Örneğin ben uzun süre güncellemiyeceğim, bunun gibi web sayfalarına "1 Ocak 2003'e dek değişmeyecek" etiketi yapıştırıyorum:
<meta http-equiv="expires" content="Wed, 01 Jan 2003 00:00:00 GMT">
Özellikle referans olarak kullanılan bilgi siteleri için ideal bir kullanım.
Yalnız, bütün sayfalarınızı tek tek düzenlemek zor olabilir. Bu durumda ufak bir Unix shell scriptine bu işi otomatik olarak yaptırtabiliriz. expirestweak.zip scripti bulunduğunuz klasörün önce .tmp.yedek.tgz adıyla bir yedeğini alıyor, ve sonra sayfadaki bütün html dosyalarına </head> tag'ından önce ilgili expires meta tag'ını ekliyor.
expirestweak script'i şu şekilde:
#!/bin/sh # # expirestweak # # # # İlker FIÇICILAR # ilkerf@geocities.com # (c) 2002 # # tar -czf .tmp.yedek.tgz *.html *.htm 2>/dev/null cat <<EOF2 >.tmp.regexp s/<\/head>/<meta http-equiv="expires" content="Wed, 01 Jan 2003 00:00:00 GMT"><\/head>/g EOF2 ls *.html *.htm | grep -v -e index.html -e menu.html -e www.html -e internet.html -e bilgisayar.html -e linux.html -e cesitli.html | while read fn do grep "expires\" content=\"Wed, 01" "$fn" >/dev/null if [ "$?" == "1" ];then echo "$fn" duzenlenmemisti duzenlendi. sed -f .tmp.regexp "$fn" > .tmp.htm mv .tmp.htm "$fn" else echo "$fn" tamam fi done
DİKKAT! yukarıdaki örnekte, sayfaya sığsın diye "ls *.html" ile başlayan ve "s/\<head" ile başlayan satırlar parçalara bölündü. Scripti hatasız kullanmak için yukarıdaki linkteki .zip'li dosyayı kullanmanızda yarar var.
Ana sayfaya dönmek icin buraya tıklayın
Önceki sayfa için de buraya tıklayın
Teknik sayfası için buraya tıklayın
Ilker Ficicilar
ilkerf@geocities.com