![]()
From: ILKER FICICILAR (ilkerf@isbank.net.tr)
Date: Tue 13 May 2003 - 00:07:56 EEST
Merhaba,
Linux listeleri biraz yogun oldugundan okuma hIzIm gelen mektup
sayIsIna yetisemiyor. Mektubunuzu yeni okuyorum, gec yanIt için kusura
bakmayIn.
Temelde www sunumunun verimini arttIrmak istemissiniz, sorunuza iki de
yanIt verilmis, ama eklenebilecek birseyler var.
1. apache'de gzip modülü var. bunu etkinlestirdiginizde html içerigi 3-4
kat sIkIstIrarak tarayIcIya yollayabiliyorsunuz. Bu modülün etkin oldugu
sunucu bir istek geldiginde bunu "Server:" basliginda "mod_gzip" ile
belli eder. Bir tarayIcI da gzip ile sIkIstIrIlmIs veriyi acabilecegini
"Accept-encoding: gzip" diyerek sunucuya bildirir. Bunu gören sunucu da
kurallarda tanImlanan içerigi, baslik kisminda "Content-Encoding: gzip"
ile diyerek ve veri kIsmInI da gzip ile sIkIstIrarak tarayiciya yollar.
Yapmasi bu yazIlanlardan daha kolay:
a) gzip modülüne sahip oldugunuzdan emin olun, yoksa kurun:
/usr/lib/apache/mod_gzip.so
b) httpd.conf'ta bu modülü belirtin:
LoadModule gzip_module /usr/lib/apache/mod_gzip.so
AddModule mod_gzip.c
ve/veya Suse'de:
# cat /etc/httpd/modules/mod_gzip
Variable:HTTPD_SEC_MOD_GZIP
LoadModule:LoadModule gzip_module /usr/lib/apache/mod_gzip.so
AddModule:AddModule mod_gzip.c
Text:gzip
c) etkinlestirin, ve ayarlayin:
<IfModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_item_include file \.php$
mod_gzip_item_include file \.htm$
mod_gzip_item_include file \.html$
mod_gzip_item_include mime text/.*
mod_gzip_dechunk yes
mod_gzip_temp_dir /tmp
mod_gzip_keep_workfiles No
</IfModule>
# Burada .php ile bitenleri, ve mime tipi text/plain text/html vs
# olanlari da gziplettirdik. Tamponlari etkin kullandirttik, gzip islemi
#sirasinda gecici dosyalari /tmp'de tuttuk, ve isimiz bitince onlari
#(workfiles) sildirdik.
#
Bu kadar.
Tabii apacheyi yeniden baslatmayi unutmazsak.
Bu yöntem tek basina ciddi hizlanma sagliyor. Üstelik
sIkIstIrma sonucu nesne büyüklügü de küçüldügünden önbellekler ve
önbellekli proxy'ler daha etkin kullanIlabiliyor. Ve isabet yüzdesi
artIyor.
2. ikinci olarak. gözden kaçan çok güzel bir özellik var, o
kullanilabilir: Expires Tag'I
Apache'de gene kurallarla, sunulan nesnelere Expires basligi
verdirtebiliyorsunuz. Expires basligi ile önbellekler daha akIlcI
kararlar verebiliyor, hem nesneler önbelleklerde daha uzun süre kalIp
istemciye daha yakIn olabiliyor, hem .php gibi anlIk üretilen verilerin
de önbelleklenmesi mümkün olabiliyor, hem de sunucu yükünüz çok
hafifliyor.
Bunu da uygulamak kolay. Gene httpd.conf'a SunlarI ekliyoruz:
ExpiresActive On
# resimleri 1 yIl daha güncellemiyecegimi varsaydIm:
ExpiresByType image/gif "access plus 1 year"
ExpiresByType image/jpeg "access plus 1 year"
#ya da bunlarIn hepsini aynI tarihte gecersiz kIlabilirsiniz:
#ExpiresByType image/jpeg "modification plus 1 year"
#gibi... Aslinda Expires ile o verinin belli bir tarihe dek
#degismeyecegini taahhüt ediyoruz.
# Sitemizdeki .zip ve .rar dosyalarimiz da son erisim tarihinden
#2 ay sonrasina dek gecerli olsun mesela:
ExpiresByType application/rar "access plus 2 months"
ExpiresByType application/zip "access plus 2 months"
#html'ler için de birseyler yapalim:
ExpiresByType text/html "access plus 7 days"
#Ben haftada bir güncelleme yapiyorum. Siz "1 day" de
#diyebilirsiniz.
#ve .php gibi digerleri icin de bi kural olsun:
ExpiresDefault "access plus 1 hour"
#Bu benim kullandigim .php ve .cgi'ler için oldukça az aslinda.
#Ben normalde 1 günlük expires kullaniyorum. Ama daha uzun da olabilir.
#verdigim parametrelerle hep ayni sonucu döndürdükleri için sorun yok.
#degisen icerigi (reklam dönüsümü gibi) javascript ile istemci tarafinda
#hallediyorum.
#Ama siz borsa verileri geciyorsaniz, burada
#"modification plus 5 minutes" kullanabilirsiniz.
Bu yöntem de bu kadar. Etkinlestirmek icin httpd yeniden baslatilmali
gene.
Expires yöntemi, özellikle anlik yüklenmelerde oldukça faydalI olabilir.
Bu gibi durumlarda, Expires ile sunucu bantgenisligi ve CPU gücü
darbogaz olmaktan cIkIyor.
Bu iki yöntem hakkinda www.w3.org ve www.mozilla.org 'da bir takIm
belgeler bulabilirsiniz.
3. BunlarIn yanInda sizin sordugunuz squid'in httpd-accel özelligi de,
eger kurallarIn biraz dIsIna cIkarsanIz daha cok ise yarar.
(Bu arada squid hakkinda aklima gelmisken... mümkünse LRU yerine heap
GDSF yöntemini kullandIrtIn önbellek yönetiminde. Daha verimli)
squid.conf'ta kurcalanabilecek birkac ayar:
a) refresh_pattern
bu da expires tag'i gibi is görüyor.
ayrintilarini squid.conf'un içindeki ilgili kisimda görebilirsiniz.
Kisaca ordaki "this violates http standard" denilen hersey sizi
hizlandiriyor. Mesela:
refresh_pattern . 0 40% 4320 reload-into-ims \
override-lastmod
# Burada, bütün nesneler için ( . ) kural belirliyoruz, en düsük yaS 0
# (dinamik veriler önbellenmesin diye IlImlI olduk),
# digerleri Last-modified verisiyle yaS hesabindaki
# agirlik %40, ve en cok 4320 yasinda.
Bir baska örnek:
refresh_pattern . 10 60% 8640 override-expire
ignore-reload reload-into-ims override-lastmod
#bunda daha acimasiz olduk ve "Pragma: no-cache" gibi basliklari da
#görmezden geldik. Hatta apache'de ayarlanan Expires tarihlerini de
#kaale almadik.
Aslinda tek tek türlerine göre de ayirabiliyoruz:
refresh_pattern \.cgi$ 1 20% 2
refresh_pattern \.php$ 1 20% 2
refresh_pattern \.gif$ 10080 100% 43200
override-expire
... gibi.
b) LRU tarafindan kullanilan algoritma esnetilebilir:
reference_age 3 years
gibi
c) Reload/Refresh cagrilarini GET-IMS (If Modified Since) cagrilarina
cevirtebilirsiniz:
reload_into_ims on
4. httpd ve accel. olarak kullaniyorsaniz squid'in pipeline http/1.1
protokolünü kullandigindan emin olmak. Bunun niye HTTP/1.0 'dan ve hatta
1.1'in persistent baglantisindan daha iyi oldugunun ayrinilari
www.w3.org 'da yer aliyor.
Bu cephede yapilabilecekler bu kadar gibi.
5. Ama bir de sunulan veri miktarini ufaltmak ise yarar.
Tek tek kim ugrasir diyorsaniz. Buyrun:
.jpg'leri bizim yerimize ufaltabilecek bilgisayarimiz varken
biz niye yapalim:
#!/bin/sh
ls *.jpg |while read qw
do
mv $qw ufal.jpg
jpegtopnm ufal.jpg| pnmtojpeg --optimize --quality=50 > $qw
done
Burada da "quality" ile oynayarak, iyi görünen ve hizli sonuç veren bir
çözüm arayabilirsiniz.
6. Benzer bir islemi tidy adli programla .html'lere de
uygulayabilirsiniz. Ve tabii site genelinde .css kullanmak da hiz
sagliyor. Bir anda, sagda soldaki <font... /font> 'lardan
kurtuluyorsunuz.
Evet bu çözümler simdilik ise yariyacaktir saniyorum.
Hoscakalin.
On Wed, 23 Apr 2003 21:52:41 -0400
"Serhan Sevim " <sevims@mezun.com> wrote:
> Selam arkadaslar,
> Ben squid server'i http-accelaration mode olarak, yani icerki
> kullanicilarin disariya olan browsing hizini arttirmak icin degilde,
> disari Internet'den gelen kullanicilarin sitemizi daha hizli
> goruntuluyebilmelerini istiyorum. Simdi sorum ise basit.
> Eger squid'i kurarsam web sitenin goruntulenmesi asagi yukari kac kat
> hizlanir? Mesela, mezun.com'un web sayfasini ele alirsak, su ankinden
> ne kadar farkli bir sonuc bekleyebiliriz sizce eger http-acceleration
> mode'da calistigini farzedersek ? Not: Site Cold Fusion uzerinden
> calisiyor. Tesekkurler,
> Iyi calismalar,
> Serhan Sevim.
>
-- ... ilker FIÇICILAR ilkerf@geocities.com ... http://ekitap.2y.net/ . Elektronik Kitaplar ... http://ekitap.2y.net/ftp.php . E-Kitap Dizini ... http://ilkerf.tripod.com/teknik/ . Linux & Bilgi ... http://ekitap.kolayweb.com/ . Palm icin E-kitap ... http://mezopotamya.tripod.com/ . Arkeoloji ... http://nukleer.findhere.org/ . Nukleer Enerji ... http://ilkerf.tripod.com/cbm.html . C64/C128 ------------------------------------------------------------------ Virus taramasi Vexira AV programi kullanilarak Is Net tarafindan yapilmistir. This e-mail is checked by Is Net against all known types of viruses using Vexira AV. Is Net'in en ucuz saatlik kullanim paketi Teneffus.Net'i ve en ucuz sinirsiz erisim paketi Taksitli Ekonet'i duymus muydunuz? http://www.isnet.net.tr/teneffusnet/ http://www.isnet.net.tr/taksitliekonet/
![]()