Expires Tag'ı Kullanımı

  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.

İlker Fıçıcılar

--

Html sayfalarının içinde expires meta tag'ını kullanmak

 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