X-Git-Url: https://granicus.if.org/sourcecode?a=blobdiff_plain;f=docs%2Fmanual%2Fcaching.html.tr.utf8;h=8dc98e9d6659052bd080f435b1820a06a829661e;hb=402ea113bbd93eef00e66ba0caaef75df15cd0e8;hp=758b735e6a1716d0b5f3e907983f0a31c3dffa1f;hpb=41a6878ac5b32785ab1abe10324d2c9f74759924;p=apache diff --git a/docs/manual/caching.html.tr.utf8 b/docs/manual/caching.html.tr.utf8 index 758b735e6a..8dc98e9d66 100644 --- a/docs/manual/caching.html.tr.utf8 +++ b/docs/manual/caching.html.tr.utf8 @@ -1,22 +1,27 @@ -
-Apache HTTP Sunucusu Sürüm 2.3
-Apache HTTP Sunucusu Sürüm 2.5
+Mevcut Diller: en | fr | @@ -25,58 +30,61 @@
Bu belge mod_cache
,
- mod_disk_cache
, mod_file_cache
+ mod_cache_disk
, mod_file_cache
modülleri ve htcacheclean
için bir baÅvuru kılavuzu niteliÄindedir. HTTP sunucusu ve vekil
olarak çalıÅmada iÅlemleri hızlandırmak için bilinen sorunlar ve
- yanlıŠyapılandırmalardan kaçınarak Apacheânin önbellekleme
+ yanlıŠyapılandırmalardan kaçınarak Apache HTTPD sunucusunun önbellekleme
özelliklerinin nasıl kullanılacaÄı açıklanmıÅtır.
Apache HTTP sunucusunun 2.2 sürümünden itibaren
- mod_cache
ve mod_file_cache
modülleri
- deneysel olmaktan çıkarılmıŠve üretim amaçlı kullanılabileceÄine karar
- verilmiÅtir. Bu önbellekleme mimarileri gerek HTTP sunucusu gerekse
- vekili olarak çalıÅmada HTTP iÅlemlerini hızlandırmak anlamında sunucuya
- güç katarlar.
mod_cache
, ortam saÄlayıcı modülü olan
- mod_disk_cache
ile birlikte HTTP önbelleklemesini
- akıllıca yerine getirir. İçeriÄin kendisi önbellekte saklanırken
- mod_cache
içeriÄin önbelleklenebilmesini denetim
- altında tutan HTTP baÅlıkları ve seçenekleri ile ilgilenir. Yerel ve
- vekalet edilen içeriÄin her ikisinin de aynı anda iÅlem görmesi
- saÄlanabilir. mod_cache
, vekalet edilen içeriÄe,
- devingen yerel içeriÄe veya zamanla deÄiÅen yerel dosyalara eriÅimi
- hızlandırma ihtiyacına yönelik olarak hem basit hem de karmaÅık
- önbellekleme yapılandırmalarını mümkün kılar.
mod_file_cache
ise biraz daha temel ancak bazen daha
- kullanıÅlı olabilen bir önbellekleme Åekli ile ilgilenir. URLâlerin
- önbelleklenebilmesini mümkün kılmanın karmaÅıklıÄıyla boÄuÅmak yerine
- mod_file_cache
, dosyaların Apacheânin son baÅlatıldıÄı
- zamanki durumlarını saklamak için dosyaların belleÄe eÅlenmek üzere ele
- alınmasını saÄlar. Böylelikle, mod_file_cache
, çok sık
- deÄiÅmeyen duraÄan yerel dosyalara eriÅim zamanını azaltmaya yardım
- eder.
CacheFile
ve
- MMapFile
yönergeleri ile
- ilgili bölümlerde anlatılanları saymazsak
- mod_file_cache
, bu belgenin asıl konusu olan
- mod_cache
önbellekleme mimarisine göre daha basit bir
- önbellekleme gerçeklenimidir.
Apache HTTP sunucusu, sunucunun baÅarımını çeÅitli yollarla arttırmak + üzere tasarlanmıŠbir dizi önbellekleme özelliÄine sahiptir.
+ +mod_cache
ve destek modülü
+ mod_cache_disk
akılcı ve HTTP'ye uygun
+ önbellekleme saÄlar. İçeriÄin kendisi önbellekte saklanır ve
+ mod_cache
, RFC2616'nın 13. bölümünde açıklandıÄı gibi, içeriÄin
+ önbelleklenebilirliÄini denetleyen çeÅitli HTTP baÅlıklarının ve
+ seçeneklerinin tümünü onurlandırmayı hedefler.
+ Devingen yerel içerik veya vekalet edilen içerik ile ilgilendiÄiniz
+ durumda veya muhtemel bir yavaŠdisk üzerinde yerel dosyalara
+ eriÅimi hızlandırmak ihtiyacında olduÄunuz durumda
+ mod_cache
hem basit hem de karmaÅık önbellekleme
+ yapılandırmalarını hedefler.
+ mod_file_cache
dosyaların sunucunun baÅlatılması
+ sırasında belleÄe yüklenmesi ile ilgilenir. Böylece dosyalara
+ eriÅim zamanını kısaltabilir, sıkça eriÅilen dosyaların dosya
+ tanıtıcılarını kaydedebilir, her istekte diske gitme ihtiyacını
+ ortadan kaldırır.
+ Bu belgeden azami yararı saÄlayabilmek için temel bir HTTP bilginizin olması ve URLâlerin Dosya Sistemine @@ -85,142 +93,215 @@
İlgili Modüller | İlgili Yönergeler |
---|---|
Bir istek sonuçlanıncaya kadar mod_cache
modülünde iki
- aÅamadan geçer. Ä°lkinde mod_cache
bir URL eÅleme modülü
- olarak çalıÅır ve URL önbellekteyse ve zaman aÅımına uÄramamıÅsa isteÄin
- doÄrudan mod_cache
tarafından sunulmasını saÄlar.
Yani isteÄin sunumu sırasında, isteÄin örneÄin,
- mod_proxy
veya mod_rewrite
tarafından
- ele alınması gerekse bile bu yapılmaz. Ãnbelleklenen içerik ilk alındıÄı
- haliyle sunulur.
EÄer URL önbellekte yoksa, mod_cache
isteÄi bir süzgece tabi tutar. Apache içeriÄin varlıÄını
- saptamıÅsa içeriÄin süzgeç tarafından sunulmasını saÄladıktan sonra,
- süzgeç içeriÄin önbelleklenebileceÄini saptamıÅsa gelecekte sunmak üzere
- içeriÄi önbelleÄe kaydeder.
İlgili Modüller | İlgili Yönergeler |
---|---|
HTTP protokolü
+ RFC2616'nın 13. bölümünde açıklanan satıriçi önbellekleme
+ mekanizması için yerleÅik bir destek içerir ve bunun getirilerinden
+ yararlanmak için mod_cache
modülü kullanılabilir.
İçeriÄin taze olmadıÄı durumda içeriÄin kaybolmasına sebep olan basit + iki durumlu anahtar/deÄer önbelleklemesinin tersine, HTTP önbelleÄi + eskimiÅ içeriÄi tutan ve bu eski içeriÄin deÄiÅip deÄiÅmediÄini özgün + sunucuya soran ve duruma göre onu tekrar taze duruma getiren bir + mekanizma içerir.
+ +HTTP önbelleÄinde bulunan bir girdi Åu üç durumdan birinde olabilir:
+ +İçerik çok eski (tazelik ömründen daha yaÅlı) + ise bayat sayılır. Bir HTTP önbelleÄi böyle bir + içeriÄi istemciye sunmadan önce özgün sunucuya baÄlanıp bayat içeriÄin + hala yeterince taze olup olmadıÄına bakmalıdır. Ãzgün sunucu, içerik + geçersizse yenisini gönderecektir, aksi takdirde, (ideal olanı budur) + içeriÄin hala geçerli olduÄunu belirten bir kod ile yanıt verecektir. + İçerik tekrar taze hale gelince süreç kaldıÄı yerden devam eder.
+ +HTTP protokolü belli koÅullar altında önbelleÄin bayat içeriÄi
+ sunmasına izin vermez. ÃrneÄin, bir içeriÄi özgün sunucuda tazeleme
+ çabasının bir 5xx hatasıyla baÅarısız olması veya baÅka bir tazeleme
+ isteÄinin henüz sonuçlanmamıŠolması bu çeÅit koÅullardandır. Bu
+ durumlarda yanıta bir Warning
baÅlıÄı eklenir.
htcacheclean
elle veya bir artalan süreci
+ olarak çalıÅtırılabilir. Böylece önbelleÄin boyutunun belirtilen
+ boyutta veya belirtilen dosya düÄümü sayısında kalması saÄlanabilir.
+ Araç içeriÄi silerken bayat içeriÄe öncelik verir.
+ HTTP önbelleklemesinin çalıÅması ile ilgili bütün ayrıntılar + RFC2616'nın 13. bölümünde bulunabilir.
+ +EÄer URL önbellekte bulunmuÅ fakat içeriÄin zaman aÅımına uÄradıÄı
- anlaÅılmıÅsa süzgeç yine de eklenir fakat bu kez
- mod_cache
önbellekteki sürümün hala geçerli olup
- olmadıÄını saptamak için kaynaÄın bulunduÄu sunucuya bir koÅullu istek
- gönderir. Ãnbellekteki sürüm hala geçerliyse temel verileri güncellenir
- ve istek önbellekten sunulur. Ãnbellekteki sürüm artık geçerli deÄilse,
- önbellekteki sürüm silinir ve süzgeç güncel içeriÄi önbelleÄe kaydeder
- ve isteÄi oradan sunar.
mod_cache
modülü
+ CacheQuickHandler
yönergesinin
+ deÄerine baÄlı olarak iki olası yerde sunucuya baÄlanır:
+
Bu aÅama çok erken gerçekleÅen bir aÅama olup isteÄin iÅlenmesi + sırasında isteÄin çözümlenmesinin hemen sonrasıdır. İçerik + önbellekte mevcutsa hemen sunulur ve geri kalan istek iÅleme iÅlemi + iptal edilir.
+ +Bu senaryoda önbellek sunucunun önüne vidalanmıŠgibi + davranır.
+ +Sunucuda gerçekleÅecek bir dizi iÅlemin büyük çoÄunluÄunun + yapılmadan geçilmesi nedeniyle bu en yüksek baÅarımlı kiptir. + Bu kip ayrıca, sunucu iÅlemlerinin kimlik doÄrulama ve yetkilendirme + aÅamalarının da yapılmadan geçilmesini saÄlar. Bu bakımdan bu kip + seçilirken bu durum dikkate alınmalıdır.
+Bu aÅama geç bir aÅama olup, isteÄin tamamen iÅlenmesinin + sonrasıdır.
+ +Bu senaryoda önbellek sunucunun arkasına vidalanmıŠgibi + davranır.
+ +Bu kip en esneÄidir. ÃnbelleÄin, süzme zincirinin hassas olarak + denetlenen bir noktasında oluÅması saÄlanabilir ve önbelleklenen + içerik istemciye gönderilmeden önce süzülüp + kiÅiselleÅtirilebilir.
+URL önbellekte yoksa mod_cache
modülü yanıtı
+ önbelleÄe kaydetme aÅamasında süzgeç yıÄıtına bir
+ süzgeç ekler ve geri çekilerek normal istek
+ iÅlemlerinin devam etmesine izin verir. İçeriÄin önbelleklenebilir
+ olduÄu saptanırsa içerik gelecekte sunulmak üzere önbelleÄe
+ kaydedilir, aksi takdirde içerik yok sayılır.
Ãnbellekteki içerik bayatsa, mod_cache
modülü
+ isteÄi bir koÅullu istek haline getirir. Ãzgün
+ sunucu normal bir yanıt verirse bu yanıt mevcut içeriÄin yerine
+ önbelleklenir. Ãzgün sunucu bir 304 Not Modified
yanıtı
+ verirse içerik tekrar taze olarak imlenir ve önbellekteki içerik
+ süzgeç tarafından kaydedilmeden sunulur.
Yerel içerik önbelleklendiÄi takdirde UseCanonicalName
yönergesine On
+
Bir sanal konak birçok farklı sunucu takma adından biri olarak
+ bilindiÄi takdirde UseCanonicalName
yönergesine On
deÄeri atanmıÅsa önbellekten sunulan sayfa sayısında büyük bir artıÅ
- olduduÄu görülür. Bunun sebebi içeriÄi sunan sanal konaÄın isminin
- önbellek anahtarının bir parçası olarak kullanılmasıdır. Yönergeye
+ olduÄu görülür. Bunun sebebi içeriÄi sunan sanal konaÄın isminin
+ önbellek anahtarının içinde kullanılmasıdır. Yönergeye
On
deÄerini atamak suretiyle çok isimli ve rumuzlu sanal
konaklar için farklı önbellek girdileri oluÅturulmaz, bunun yerine her
meÅru sanal konak için ayrı bir önbellek tutulur.
Ãnbellekleme, URLânin dosya ismine dönüÅtürülmesi aÅamasında - gerçekleÅtiÄinden önbelleklenen belgeler sadece URL isteklerine bir - yanıt olarak sunulurlar. Sunucu Taraflı - İçerikleri kullanmazsanız genellikle bunun fazla bir önemi - olmaz.
- -
- <!-- Bu içerik önbelleklenebilir. -->
- <!--#include virtual="/dipnot.html" -->
-
- <!-- Bu içerik önbelleklenemez. -->
- <!--#include file="/bir/yol/dipnot.html" -->
-
Sunucu Taraflı İçerikleri kullanıyorsanız ve önbelleklemenin
- saÄladıÄı hız artıÅından da yaralanmak istiyorsanız içerik
- yerleÅtirmek için virtual
içerik türünü kullanınız.
Ãnbellekli öÄeler için öntanımlı zaman aÅımı süresi bir saat olmakla
- birlikte CacheDefaultExpire
- yönergesi kullanılarak bu deÄer kolaylıkla geçersiz kılınabilir. Bu
- öntanımlı deÄer sadece içeriÄin özgün kaynaÄı bir zaman aÅımı süresi
- veya son deÄiÅiklik tarihi belirtmediÄi takdirde kullanılır.
Ãnbelleklenmek üzere tasarlanmıŠiyi biçimli bir içerik tazelik ömrünü
+ Cache-Control
baÅlıÄının max-age
veya
+ s-maxage
alanlarıyla ya da bir Expires
+ baÅlıÄını içererek bildirmelidir.
Aynı zamanda, özgün sunucunun tanımladıÄı tazelik ömrü, bir istemci
+ tarafından istekte bir Cache-Control
baÅlıÄı kullanılarak
+ geçersiz kılınmak istenebilir. Bu durumda hangi tazelik ömrü daha
+ kısaysa o geçerli olur.
Tazelik ömrü istekte veya yanıtta mevcut deÄilse öntanımlı bir tazelik
+ ömrü kullanılır. Ãntanımlı tazelik ömrü önbellekli içerik için bir saat
+ olmakla birlikte CacheDefaultExpire
yönergesi
+ kullanılarak kolayca deÄiÅtirilebilir.
Bir yanıt Expires
baÅlıÄını deÄil de
Last-Modified
baÅlıÄını içeriyorsa
- mod_cache
zaman aÅımı süresini CacheLastModifiedFactor
yönergesinin
- nasıl kullanıldıÄına bakarak saptar.
mod_cache
tazelik ömrünü CacheLastModifiedFactor
yönergesine
+ bakarak saptar.
- Yerel içerik için, zaman aÅımı süresini hassas olarak ayarlamak
- gerekirse mod_expires
kullanılabilir.
Yerel içerik için, ya da kendi Expires
baÅlıÄını
+ tanımlamayan uzak içerik için tazelik ömrünü max-age
ve
+ Expires
ekleyerek hassas olarak ayarlamak
+ için mod_expires
kullanılabilir.
Zaman aÅımı süresinin üst sınırı CacheMaxExpire
yönergesi ile
+
Tazelik ömrünün üst sınırı CacheMaxExpire
yönergesi ile
belirlenebilir.
Ãnbellekteki içerik zaman aÅımına uÄrayıp, içerik saÄlayıcıya veya - arka sunucuya özgün isteÄi aktarmak yerine ayrı bir istek yapılması - gereÄi Apacheânin Åartlı bir istek yapması sonucunu doÄurur.
- -Bir istemcinin veya önbelleÄin aynı içeriÄin farklı sürümleri - arasında ayrım yapabilmesi için HTTP protokolü bazı baÅlık alanları - önerir. ÃrneÄin, "Etag:" baÅlıÄıyla sunulan bir özkaynak için - "If-None-Match:" baÅlıÄıyla bir Åartlı istek yapmak mümkün olduÄu gibi - özkaynak "Last-Modified:" baÅlıÄıyla sunuluyorsa Åartlı istek - "If-Modified-Since:" baÅlıÄıyla yapılabilir, vesaire.
- -Böyle bir Åartlı istek yapıldıÄında yanıt koÅulun içerikle eÅleÅip - eÅleÅmediÄine baÄlı olarak farklı olur. EÄer istek bir - "If-Modified-Since:" baÅlıÄıyla yapılmıÅsa ve içerik istekte - belirtilen zamandan önce deÄiÅtirilmemiÅse kısa ve öz olarak bir "304 - Not Modified" (Bir deÄiÅiklik yok) iletisiyle yanıt verilir.
- -Aksi takdirde bir Åartlı istek yapılmamıŠgibi içeriÄin kendisi +
Ãnbellekteki içeriÄin zaman aÅımına uÄrayıp bayat hale gelmesi, + httpdânin özgün isteÄi aktarmak yerine isteÄi deÄiÅikliÄe uÄratarak + Åartlı bir istek yapması sonucunu doÄurur.
+ +Ãzgün önbellekli yanıtta bir ETag
baÅlıÄı mevcutsa,
+ mod_cache
modülü özgün sunucuya yapılan isteÄe
+ bir If-None-Match
baÅlıÄı ekler.
+ Ãzgün önbellekli yanıtta bir Last-Modified
baÅlıÄı
+ mevcutsa, mod_cache
modülü özgün sunucuya yapılan
+ isteÄe bir If-Modified-Since
baÅlıÄı ekler. Bunlardan
+ birinin varlıÄı isteÄi koÅullu yapar.
Bir koÅullu istek özgün sunucu tarafından alındıÄında, özgün sunucu
+ ETag
veya Last-Modified
baÅlıÄının isteÄe
+ uygun olarak deÄiÅip deÄiÅmediÄine bakmalıdır. DeÄiÅmemiÅse, özgün
+ sunucu kısa ve öz bir "304 Not Modified" yanıtı ile yanıt vermelidir.
+ Bunun önbellekteki anlamı Åudur: EskimiÅ içerik hala tazedir ve içerik
+ yeni tazelik ömrüne ulaÅıncaya kadar sonraki isteklerde
+ kullanılmalıdır.
İçerik deÄiÅmiÅse, bir Åartlı istek yapılmamıŠgibi içeriÄin kendisi sunulur.
-Ãnbellekleme ile ilgili Åartlı istekler çifte yarar saÄlar. Birinci - olarak, böyle bir istek arkadaki sunucuya yapılıyorsa ve iki içerik de - aynıysa bunu saptamak kolay olur ve özkaynaÄın tamamını aktarma - külfetinden kurtulunur.
+Åartlı istekler çifte yarar saÄlar. Birinci olarak, böyle bir istek + özgün sunucuya yapılıyorsa ve iki içerik de aynıysa bunu saptamak kolay + olur ve özkaynaÄın tamamını aktarma külfetinden kurtulunur.
-Ä°kinci olarak, Åartlı istekler arka sunucuda normalden daha az - faaliyete sebep olur. DuraÄan dosyalar için bu genellikle +
Ä°kinci olarak, iyi tasarlanmıŠbir özgün sunucu, koÅullu istekler tam
+ bir yanıt üretmekten önemli ölçüde ucuz olacak Åekilde tasarlanmıÅ
+ olacaktır. DuraÄan dosyalar için bu genellikle
stat()
veya benzeri bir sistem çaÄrısıyla dosya
boyutları ve deÄiÅiklik zamanına bakmak Åeklinde gerçekleÅir.
- Böylelikle Apache yerel içeriÄi önbellekliyor olsa bile ve hatta
- içerik zaman aÅımına da uÄrasa önbellekteki dosyada bir deÄiÅiklik
- olmadıÄı takdirde içeriÄi önbellekten sunmak daha hızlı olacaktır.
- Ãünkü dosyayı önbellekten okumak, arka sunucudan okumaktan daha
- hızlıdır (bu, bellekten okumayla diskten okumayı karÅılaÅtırmak
- gibidir).
Ãzgün sunucular koÅullu istekleri desteklemek için her türlü çabayı + göstermelidir. Ancak, koÅullu istekler desteklenmiyorsa, özgün sunucu + istek koÅullu deÄilmiÅ gibi yanıt vermeli, önbellek ise, içerik + deÄiÅmiÅ ve yani içerik önbelleÄe kaydedilmiÅ gibi yanıt vermelidir. Bu + durumda, önbellek basit bir iki durumlu (içerik ya tazedir ya da + silinmiÅ) önbellek gibi davranacaktır.
Evvelce bahsedildiÄi gibi Apacheâde iki tür önbellekleme yapılır ve
- bunlar farklı yöntemlerle çalıÅır. mod_file_cache
- önbelleklemesinde dosyalar Apache baÅlatıldıÄı zamanki içerikle
- saklanır. Bu modül tarafından önbelleÄe alınmıŠbir dosya için istek
- geldiÄinde isteÄin yolu kesilip önbellekteki dosya sunulur.
mod_cache
önbelleklemesinde iÅler biraz daha
- karıÅıktır. Bir isteÄe hizmet sunulurken istenen içerik evvelce
- önbelleklenmemiÅse önbellekleme modülü önce içeriÄin
- önbelleklenebilirliÄine bakar. Bir yanıtın önbelleklenebilirliÄini
- belirleyen koÅullar Åunlardır:
HTTP önbelleÄin tarafından önbelleklenebilecek içerik + + RFC2616 Section 13.4 Response Cacheability belgesinde tanımlanmıŠ+ olup, bunlar Åöyle özetlenebilir:
CacheEnable
ve CacheDisable
yönergelerine bakınız.CacheIgnoreNoLastMod
yönergesinin kullanımını gerektiren bir durum olmadıkça 200 durum
koduna sahip bir yanıtın "Etag", "Last-Modified" ve "Expires"
- baÅlıklarından birini veya "Cache-Control:" baÅlıÄının max-age veya
- max-age yönergelerinden birini (en azından) içermesi gerekir.CacheStorePrivate
yönergesinin kullanımını gerektiren bir durum olmadıkça yanıt
@@ -265,26 +344,35 @@
Kısaca, istek zamana aÅırı baÄımlıysa ya da istek kısmen bile olsa - HTTP uzlaÅımıyla baÄdaÅmıyorsa önbelleÄe alınmamalıdır.
+İçerik zamana baÄımlıysa ya da istek kısmen bile olsa HTTP uzlaÅımıyla
+ baÄdaÅmıyorsa önbelleÄe alınmamalıdır. Bu içerik önbelleklenemeyeceÄini
+ Cache-Control
baÅlıÄını kullanarak sunucuya
+ bildirmelidir.
İçeriÄi istekçinin IP adresine baÄlı olarak deÄiÅen veya her beÅ - dakikada bir deÄiÅikliÄe uÄrayan bir devingen içeriÄe sahipseniz böyle - bir içerik asla önbelleÄe alınmamalıdır.
+İçerik sıkça deÄiÅiyorsa, tazelik ömrü dakikalar veya saniyelerle + ifade ediliyorsa, içerik yine de önbelleklenebilir. Ancak, tam + yanıtların düzenli olarak üretilmemesinin temini için özgün sunucunun + koÅullu istekleri doÄru olarak desteklemesi + saÄlanmalıdır.
-DiÄer taraftan, içerik HTTP baÅlıÄındaki deÄerlere baÄlı olarak - deÄiÅiyorsa içeriÄin bir "Vary" baÅlıÄı kullanılarak akıllıca - önbelleklenmesi imkanı mevcuttur.
+Ä°stemcinin saÄladıÄı istek baÅlıklarına dayanarak deÄiÅen içerik,
+ Vary
yanıt baÅlıÄının akıllıca kullanımıyla
+ önbelleklenebilir.
"Vary" baÅlıklı bir yanıt arka sunucudan istenirken
- mod_cache
tarafından alınmıÅsa akıllıca ele alınmaya
- çalıÅılacaktır. Mümkünse, mod_cache
gelecekte bu
- içerikle ilgili isteklerin "Vary" baÅlıklı yanıtları olacaÄını
- saptayacak ve önbellekten doÄru içerikle yanıt verecektir.
Ãzgün sunucu, istekteki baÅlık deÄerlerine dayanarak farklı + içeriklerle yanıt vermeye ayarlandıÄı takdirde, örneÄin aynı URL'de + farklı dillerde içerik sunmak gibi, HTTP'nin önbellekleme mekanizması + aynı URL'de aynı sayfanın deÄiÅik sürümlerini önbelleklemeyi mümkün + kılar.
+ +Bu özgün sunucu tarafından bir Vary
baÅlıÄı eklenerek
+ yapılır. Bir sayfanın farklı sürümleri arasındaki farkları saptarken
+ önbellek tarafından hangi baÅlıkların hesaba katılacaÄını
+ Vary
baÅlıÄı belirler.
ÃrneÄin, bir yanıt Åöyle bir baÅlık ile alınmıÅsa,
@@ -294,145 +382,235 @@mod_cache
sadece accept-language ve accept-charset
baÅlıkları özgün istekle eÅleÅen önbellekli içeriÄi sunacaktır.
İçeriÄin farklı sürümleri yan yana önbelleklenebilir.
+ mod_cache
modülü Vary
baÅlıÄını
+ kullanarak baÅlıkta listelenmiÅ istek baÅlıklarının uygun deÄerlerini
+ saptar ve istemciye hangi sürümle yanıt verileceÄine karar verir.
mod_cache
çoÄunlukla bir karÅı vekile sahip olmak
- amacıyla kullanılır. Arka sunucunun sorgulanmasını gerektirmeyen tüm
- istekler önbellekleme modülü tarafından karÅılanacaktır. Yerel
- özkaynakların önbelleklenmesi söz konusu olduÄunda Apacheânin güvenlik
- modeli büyükçe bir deÄiÅikliÄe uÄrar.
mod_cache
modülü önbelleÄi yönetmek için çeÅitli
+ depolama ortamlarına özgü gerçeklenimleri kullanır. Diske önbellekleme
+ desteÄini mod_cache_disk
saÄlar.
Olası .htaccess
dosyalarının dosya sisteminin tamamında
- taranması çok pahalı bir iÅlem olduÄundan mod_cache
,
- (iÅlemi hızlandırmak için) önbelleÄe almanın temel amacını kısmen
- gözardı ederek, önbellekteki içeriÄin sunumu için gerekli
- yetkilendirmenin olup olmadıÄı konusunda bir karar üretmez. BaÅka bir
- deyiÅle, eÄer mod_cache
bir kısım içeriÄi önbelleÄe
- almıÅsa içerik zaman aÅımına uÄramadıÄı sürece bu içerik önbellekten
- sunulacaktır.
Tipik olarak modül Åöyle yapılandırılır:
-ÃrneÄin, yapılandırmanız bir özkaynaÄa IP adresine göre eriÅime izin
- veriyorsa bu içeriÄin önbelleÄe alınmayacaÄından emin olmalısınız.
- Bunu CacheDisable
- yönergesini veya mod_expires
kullanarak
- yapabilirsiniz. Bunu yapmaz, olayı kendi haline bırakırsanız
- mod_cache
bir karÅı vekil gibi çalıÅarak sunulan her
- içeriÄi arabelleÄe alacak ve hangi IP adresinden gelirse gelsin her
- istemciye bunu sunacaktır.
+CacheRoot /var/cache/apache/
+CacheEnable disk /
+CacheDirLevels 2
+CacheDirLength 1
+
En önemlisi önbelleklenen dosyaların yerel olarak saklanması olup + iÅletim sisteminin saÄladıÄı bellekiçi önbelleklemeden de ayrıca + faydalanılmıŠolur. Bu bakımdan, dosyalar disk üzerinde saklansa bile + sıkça eriÅilen dosyalar iÅletim sistemi sayesinde aslında bellekten + sunulmuÅ olacaklardır.
-Son kullanıcılarıın isteklerine önbellekten hizmet sunulduÄundan - önbelleÄin kendisi içerikle etkileÅime geçmek isteyenlerin veya - içeriÄi tahrif etmek isteyenlerin hedefi haline gelebilir. Apacheâyi - çalıÅtıran kullanıcı tarafından her zaman önbelleÄe yazılabileceÄini - akıldan çıkarmamak önemlidir. Bu durumda alıÅılmıÅın tersine tüm - içeriÄin Apache kullanıcısı tarafından yazılamamasının saÄlanması - önerilir.
+mod_cache_disk
öÄeleri önbellekte saklamak için
+ istek yapılan URLânin 22 karakterlik özetini oluÅturur. Bu özet, çok
+ sayıda URLânin aynı özeti oluÅturmaması için konak ismi, protokol,
+ port ve varsa CGI argümanlarından baÅka Vary
baÅlıÄında
+ tanımlı elemanlardan oluÅur.
EÄer Apache kullanıcısı, örneÄin bir CGI sürecindeki açık nedeniyle
- tehlikeye atılırsa, önbellek hedef alınabilir.
- mod_disk_cache
kullanılırken önbellekteki bir öÄeyi
- deÄiÅtirmek veya önbelleÄe yeni bir öÄe eklemek görece daha
- kolaydır.
Ãzeti oluÅturan karakterler 64 karakterlik bir karakter kümesinden
+ seçildiÄinden oluÅturulması olası farklı özet sayısı 64^22âdir.
+ ÃrneÄin, bir URLânin xyTGxSMO2b68mBCykqkp1w
gibi bir
+ özeti olabilir. Bu özet, bu URL ile eriÅilen dosyalar önbellek içinde
+ saklanırken dosya ismi öneki olarak kullanılır. Ancak bununla
+ yetinilmez ve içerik CacheDirLevels
ve CacheDirLength
yönergelerinin
+ deÄerlerine göre önce dizinlere ayrılır.
Bu risk, Apache kullanıcısını kullanan diÄer saldırı türleriyle
- karÅılaÅtırıldıÄında daha yüksektir. mod_disk_cache
- kullanıyorsanız Åunları aklınızdan çıkarmayın: (1) Apache güvenlik
- güncellemelerini takip edin ve sunucunuzu buna göre güncelleyin. (2)
- Mümkünse suEXEC kullanarak CGI süreçlerini
- Apache kullanıcısı olmayan bir kullanıcının aidiyetinde çalıÅtırın.
CacheDirLevels
+ yönergesi kaç alt seviye dizin olacaÄını ve CacheDirLength
her dizinde kaç
+ karakter olacaÄını belirler. ÃrneÄin, yukarıdaki
+ özete sahip bir dosyanın isminin baÅına yukarıdaki yapılandırma
+ örneÄine uygun olarak
+ /var/cache/apache/x/y/TGxSMO2b68mBCykqkp1w
gibi bir önek
+ getirilebilirdi.
Bu tekniÄin asıl amacı belli bir dizin içinde bulunabilecek
+ dosyaların ve alt dizinlerin sayısını düÅük tutmaktır. Bu sayının
+ büyük olması çoÄu iÅletim sisteminde baÅarımın düÅmesine sebep olur.
+ CacheDirLength
+ yönergesi "1" deÄeriyle kullanıldıÄında her dizin altında en fazla 64
+ alt dizin veya dosya açılabilir. "2" deÄeriyle kullanıldıÄında ise bu
+ sayı 64^2âye yükselir ve böyle artarak gider. Ä°yi bir sebebiniz
+ olmadıkça CacheDirLength
için deÄer olarak
+ "1" belirtmenizi öneririz.
CacheDirLevels
+ yönergesine atanacak deÄer önbellekte saklamayı düÅündüÄünüz olası
+ dosya sayısı ile ilgilidir. Yukarıdaki örnekte olduÄu gibi "2"
+ deÄerini belirtirseniz, toplamda en fazla 4096 dizin oluÅturulabilir.
+ 1 milyon dosyanın önbelleklendiÄi bir durumda bu, her dizinde yaklaÅık
+ olarak 245 önbelleklenmiŠURL demektir.
Her URL için önbellekte en az iki dosya saklanır. Biri genellikle URL + hakkındaki temel verilerden oluÅan ".header" dosyasıdır, diÄeri ise + sunulacak içeriÄin bire bir kopyası olan ".data" dosyasıdır.
+ +"Vary" baÅlıÄı üzerinden içeriÄin uzlaÅıldıÄı durumda URL için bir + ".vary" dizini oluÅturulur. Bu dizin her biri farklı bir uzlaÅıma ait + çok sayıda ".data" dosyası içerebilir.
-Apache bir önbellekli vekil sunucu olarak çalıÅtıÄında önbellek - zehirlenmesi adı verilen sorunla karÅılaÅılma olasılıÄı vardır. - Ãnbellek zehirlenmesi, vekil sunucunun arka sunucudan yanlıŠ(ve - genellikle istenmeyen) içerik almasına sebep olan bir saldırı türünü - betimlemek için yaygın olarak kullanılan bir terimdir.
+mod_cache_disk
zaman aÅımına uÄrayan önbellekli
+ içeriÄi silse de önbelleÄin toplam boyu ve ne kadar boÅ bellek kaldıÄı
+ hakkında bilgi vermez.
ÃrneÄin Apacheânin çalıÅtıÄı sistemin kullandıÄı DNS sunucuları DNS - önbellek zehirlenmesinden etkilenebilecek durumdaysa, bir saldırgan - Apacheânin istekleri almak için baÅvuracaÄı kaynak sunucunun yerini - deÄiÅtirebilir. DiÄer bir örnek, HTTP istek kaçakçılıÄı adı verilen - bir saldırı türüdür.
+Bunun yerine httpd önbellek içeriÄini düzenli aralıklarla
+ temizleyebilmeniz için htcacheclean
adında bir araç
+ içerir. Ãnbellek için azami ne kadar yer kullanılacaÄının ve bunun
+ üzerinde htcacheclean
âi hangi sıklıkta
+ çalıÅtırılacaÄının tespiti biraz karmaÅık bir iÅlem olup uygun deÄerler
+ genellikle deneme yanılma yoluyla bulunur.
Bu belge HTTP istek kaçakçılıÄını derinliÄine incelenmesi için uygun - yer deÄildir (böyle kaynaklara arama motorunuzla eriÅebilirsiniz). - Bununla birlikte, vekil tarafından kaynak sunucudan alınan içeriÄi - tamamen denetim altına almak amacıyla kaynak sunucudaki bir açıÄı - istismar etmeye yönelik bir dizi istek yapılabileceÄinin olasılık - dahilinde olduÄunu bilmenizde yarar vardır.
+htcacheclean
iki iÅlem kipine sahiptir. Kalıcı bir
+ artalan süreci olarak çalıÅabileceÄi gibi cron üzerinden belli
+ aralıklarla da çalıÅtırılabilir. Ãok büyük (onlarca GB) önbelleklerde
+ htcacheclean
âin iÅini bitirmesi 1 saatten fazla
+ sürebileceÄinden, cron ile çalıÅtırma durumunda aynı anda birden fazla
+ kopyanın çalıÅıyor durumda olmaması için
+ htcacheclean
âin çalıÅtırılma aralıÄını iyi
+ belirlemek gerekir.
Ayrıca, htcacheclean
için uygun bir "nice" seviyesi
+ seçilmesi önerilr. Böylece, sunucu çalıÅırken aracın ölçüsüz disk g/ç
+ yapmasına sebebiyet verilmemiŠolur.
+
+ Åekil 1:
+ ÃnbelleÄin büyümesi ve düzenli aralıklarla temizlenmesi.
mod_cache_disk
ne kadar bellek kullanıldıÄı hakkında
+ bilgi vermediÄinden, htcacheclean
'in bir temizliÄin
+ ardından yeterli bir büyüme alanı kalacak Åekilde yapılandırılması
+ temin edilmelidir.
İlgili Modüller | İlgili Yönergeler |
---|---|
İlgili Modüller | İlgili Yönergeler |
---|---|
Apache HTTP sunucusu, SSL oturumları, kimlik doÄrulama bilgileri gibi + önbelleklenebilen özel bilgiler için socache + arayüzü içinde düÅük seviyeli bir paylaÅımlı nesne önbelleÄine + sahiptir.
-Bir dosyanın açılması iÅlemi, özellikle de aÄ dosya sistemlerinde - bulunan dosyalar için önemli bir gecikme kaynaÄı olabilir. Ãnbellekte, - çok sunulan dosyaların kendilerinin deÄil, açık dosya tanıtıcılarının - saklanması Apacheâyi bu tür gecikmelerden koruyabilir. Apacheâde tek türde - dosya tanıtıcı önbelleklemesi yapılabilmektedir.
+Her gerçeklenime uygun ek modüller de saÄlanmıÅtır:
-CacheFile
yönergesi ilemod_socache_dbm
mod_socache_dc
mod_socache_memcache
mod_socache_shmcb
Apacheâde mevcut önbelleklemenin en temel Åekli
- mod_file_cache
tarafından saÄlanan dosya tanıtıcı
- önbelleklemesidir. Bu önbellek türü dosyaların kendilerini deÄil açık
- dosya tanıtıcılarının bir listesini saklar. Dosyaların bu anlamda
- önbelleklenmesi, CacheFile
yönergesi yapılandırma dosyasında belirtilerek
- saÄlanabilir.
İlgili Modüller | İlgili Yönergeler |
---|---|
CacheFile
yönergesi
- belirtilen dosyanın Apache baÅlatıldıÄında açılmasını ve dosya için
- yapılan sonraki her istekte bu dosya tanıtıcısının kullanılmasını
+
mod_authn_socache
modülü kimlik doÄrulama araçlarının
+ yükünün hafifletilmesini, kimlik doÄrulama sonucunun önbelleklenmesini
saÄlar.
- CacheFile /usr/local/apache2/htdocs/index.html
-
Büyük miktarda dosyayı bu anlamda önbelleklemeyi tasarlıyorsanız - iÅletim sisteminizin açık dosya tanıtıcılarının sayısı ile ilgili - sınırlamasını uygun bir deÄere ayarlamanız gerekebilir.
- -CacheFile
yönergesini
- kullandıÄınız takdirde dosya içeriÄindeki deÄiÅiklikleri anında isteÄe
- yansıtamazsınız. Apache dosyayı ilk baÅlatıldıÄındaki haliyle
- sunar.
EÄer Apache çalıÅırken dosya silinmiÅse Apache ilk baÅlatıldıÄındaki - haline iliÅkin dosya tanıtıcıyı saÄlamaya ve dolayısıyla dosya - içeriÄini sunmaya devam edecektir. Yani, dosya silinmiÅ ve artık dosya - sisteminde görünmüyor olsa bile Apache durdurulup dosya tanıtıcıları - kapanmadıkça dosyaların silinmesiyle açılan yer serbest - kalmayacaktır.
+İlgili Modüller | İlgili Yönergeler |
---|---|
mod_ssl
modülü, oturum önbelleÄi ve önbellek
+ zımbalaması saÄlamak için socache
arayüzünü kullanır.
İlgili Modüller | İlgili Yönergeler |
---|---|
İlgili Modüller | İlgili Yönergeler |
---|---|
Dosya sisteminin yavaÅ olabildiÄi veya dosya tanıtıcılarının + kullanımının pahalıya mal olduÄu sistemlerde, sunucunun baÅlatılması + sırasında dosyaların belleÄe yüklenmesi seçeneÄi vardır.
-İçeriÄin sistem belleÄinden sunulması içerik sunmanın evrensel olarak +
Dosyaların açılmasının yavaÅ olduÄu sistemlerde, dosyaların sunucunun + baÅlatılması sırasında açılması ve dosya tanıtıcısını önbelleklenmesi + seçeneÄi vardır. Bu seçeneklerin duruk dosyalara eriÅimin yavaÅ olduÄu + sistemlere de bir yardımı olabilir.
+ +Bir dosyanın açılması iÅlemi, özellikle de aÄ dosya sistemlerinde + bulunan dosyalar için önemli bir gecikme kaynaÄı olabilir. Ãnbellekte, + çok sunulan dosyaların kendilerinin deÄil, açık dosya tanıtıcılarının + saklanması httpdâyi bu tür gecikmelerden koruyabilir. httpdâde tek + türde dosya tanıtıcı önbelleklemesi yapılabilmektedir.
+ +CacheFile
yönergesi ilehttpdâde mevcut önbelleklemenin en temel Åekli
+ mod_file_cache
tarafından saÄlanan dosya tanıtıcı
+ önbelleklemesidir. Bu önbellek türü dosyaların kendilerini deÄil açık
+ dosya tanıtıcılarının bir listesini saklar. Dosyaların bu anlamda
+ önbelleklenmesi, CacheFile
yönergesi yapılandırma dosyasında belirtilerek
+ saÄlanabilir.
CacheFile
yönergesi
+ belirtilen dosyanın httpd baÅlatıldıÄında açılmasını ve dosya için
+ yapılan sonraki her istekte bu dosya tanıtıcısının kullanılmasını
+ saÄlar.
+ CacheFile /usr/local/apache2/htdocs/index.html
+
Büyük miktarda dosyayı bu anlamda önbelleklemeyi tasarlıyorsanız + iÅletim sisteminizin açık dosya tanıtıcılarının sayısı ile ilgili + sınırlamasını uygun bir deÄere ayarlamanız gerekebilir.
+ +CacheFile
yönergesini
+ kullandıÄınız takdirde dosya içeriÄindeki deÄiÅiklikleri anında
+ isteÄe yansıtamazsınız. httpd dosyayı ilk baÅlatıldıÄındaki haliyle
+ sunar.
EÄer httpd çalıÅırken dosya silinmiÅse httpd ilk baÅlatıldıÄındaki + haline iliÅkin dosya tanıtıcıyı saÄlamaya ve dolayısıyla dosya + içeriÄini sunmaya devam edecektir. Yani, dosya silinmiÅ ve artık + dosya sisteminde görünmüyor olsa bile httpd durdurulup dosya + tanıtıcıları kapanmadıkça dosyaların silinmesiyle açılan yer serbest + kalmayacaktır.
+ + + + +İçeriÄin sistem belleÄinden sunulması içerik sunmanın evrensel olarak en hızlı yoludur. Dosyaların bir disk denetleyiciden okunması ya da daha kötüsü uzak bir aÄdan okunması bellekten okumayla karÅılaÅtırılamayacak ölçüde yavaÅ iÅlemlerdir. Disk denetleyiciler genellikle fiziksel @@ -440,198 +618,221 @@ etkilenir. Halbuki bellek eriÅimi sadece nano saniyeler mertebesinde gerçekleÅir.
-Sistem belleÄi en pahalı saklama ortamı olması sebebiyle en verimli +
Sistem belleÄi en pahalı saklama ortamı olması sebebiyle en verimli Åekilde kullanımı önemlidir. Dosyaları sistem belleÄinde saklamakla sistemin kullanabileceÄi bellek miktarını azaltmıŠolursunuz. Ä°Åletim sistemi önbelleklemesinde göreceÄiniz gibi bu öyle basit bir konu - deÄildir. Apacheânin kendi kullandıÄı belleÄin bir kısmını önbellek + deÄildir. httpdânin kendi kullandıÄı belleÄin bir kısmını önbellek olarak ayırırken çok fazla bellek kullanmamak önemlidir. Aksi takdirde iÅletim sistemi belleÄin yetmediÄi noktada belleÄi diske takaslayacaÄından istenen baÅarım artıÅı saÄlanamayacaktır.
-Günümüz iÅtetim sistemlerinin hemen hemen tamamında bellek içi +
Günümüz iÅtetim sistemlerinin hemen hemen tamamında bellek içi dosya/veri saklama iÅlemlerini çekirdek yönetir. Bu güçlü bir özelliktir ve iÅletim sistemlerinin büyük çoÄunluÄu bunu böyle yapar. ÃrneÄin, Linuxâta bir dosyanın ilk defa okunduÄunda ve ikinci kez okunduÄunda iÅlemcinin ne kadar meÅgul edildiÄine bakalım:
-
- colm@coroebus:~$ time cat testfile > /dev/null
- real 0m0.065s
- user 0m0.000s
- sys 0m0.001s
- colm@coroebus:~$ time cat testfile > /dev/null
- real 0m0.003s
- user 0m0.003s
- sys 0m0.000s
-
Küçük bir dosya için bile okuma süresi bakımından büyük fark ortaya - çıkmaktadır. Bunun sebebi çekirdeÄin dosya içeriÄini bellek daha - güncel amaçlar için lazım olana dek bellek içinde saklamasıdır.
- -Sisteminizde yeterince yedek bellek olduÄundan eminseniz, bu - önbellekte daha fazla dosya saklanacaÄından emin olabilirsiniz. - Bundan, önbelleÄin sistem belleÄinde verimli biçimde tutulması için - Apacheâde ek bir yapılandırmaya gidilmesinin gerekmediÄi sonucu - çıkarılabilir.
- -Bundan baÅka, iÅletim sistemi dosyaların deÄiÅtiÄi ve silindiÄi - zamanları bildiÄinden bu tür dosyaların içerikleri gerektiÄinde - önbellekten kendiliÄinden silinmiÅ olur. Bellek içinde dosya saklarken - dosyaların deÄiÅtirilme zamanlarını bilme olanaÄı olmadıÄından bu - durum Apacheâye büyük yarar saÄlar.
- - -Ä°Åletim sisteminin dosyaların önbelleklenmesi için saÄladıÄı bunca - yarara ve baÅarım artıÅına karÅın bellek içinde dosya önbelleklemenin - Apache tarafından yerine getirilmesinin daha iyi olacaÄı bazı durumlar - vardır.
- -MMapFile
yönergesi ile
+ colm@coroebus:~$ time cat testfile > /dev/null
+ real 0m0.065s
+ user 0m0.000s
+ sys 0m0.001s
+ colm@coroebus:~$ time cat testfile > /dev/null
+ real 0m0.003s
+ user 0m0.003s
+ sys 0m0.000s
+
Küçük bir dosya için bile okuma süresi bakımından büyük fark ortaya + çıkmaktadır. Bunun sebebi çekirdeÄin dosya içeriÄini bellek daha + güncel amaçlar için lazım olana dek bellek içinde saklamasıdır.
+ +Sisteminizde yeterince yedek bellek olduÄundan eminseniz, bu + önbellekte daha fazla dosya saklanacaÄından emin olabilirsiniz. + Bundan, önbelleÄin sistem belleÄinde verimli biçimde tutulması için + httpdâde ek bir yapılandırmaya gidilmesinin gerekmediÄi sonucu + çıkarılabilir.
+ +Bundan baÅka, iÅletim sistemi dosyaların deÄiÅtiÄi ve silindiÄi + zamanları bildiÄinden bu tür dosyaların içerikleri gerektiÄinde + önbellekten kendiliÄinden silinmiÅ olur. Bellek içinde dosya + saklarken dosyaların deÄiÅtirilme zamanlarını bilme olanaÄı + olmadıÄından bu durum httpdâye büyük yarar saÄlar.
-mod_file_cache
modülü, bir duraÄan dosyanın
- içeriÄini sunucunun baÅlatılması sırasında (mmap sistem çaÄrısıyla)
- belleÄe eÅlenmesini mümkün kılmak için MMapFile
yönergesini saÄlar.
- Apache bu dosyaya gelecek sonraki istekler için dosyanın bellekiçi
- içeriÄini kullanacaktır.
- MMapFile /usr/local/apache2/htdocs/index.html
-
CacheFile
yönergesinde
- olduÄu gibi bu dosyalarda Apache baÅlatıldıktan sonra yapılacak bir
- deÄiÅiklikten Apacheânin haberi olmayacaktır.
MMapFile
yönergesi
- ayırdıÄı belleÄin toplam miktarı ile ilgilenmez, dolayısıyla
- yönergenin aÅırı kullanımından kaçınmalısınız. Apacheânin çocuk
- süreçlerinin her biri bu belleÄin kendilerine ait birer kopyasını
- yapacaÄından belleÄe eÅlenen dosyaların çok yer kaplamaması büyük önem
- taÅımaktadır; aksi takdirde iÅletim sistemi belleÄi diske
- takaslayacaÄından beklenen fayda saÄlanamayacaktır.
Ä°Åletim sisteminin dosyaların önbelleklenmesi için saÄladıÄı bunca + yarara ve baÅarım artıÅına karÅın bellek içinde dosya önbelleklemenin + httpd tarafından yerine getirilmesinin daha iyi olacaÄı bazı durumlar + vardır.
+ +MMapFile
yönergesi ilemod_file_cache
modülü, bir duraÄan dosyanın
+ içeriÄini sunucunun baÅlatılması sırasında (mmap sistem çaÄrısıyla)
+ belleÄe eÅlenmesini mümkün kılmak için MMapFile
yönergesini saÄlar.
+ httpd bu dosyaya gelecek sonraki istekler için dosyanın bellekiçi
+ içeriÄini kullanacaktır.
+ MMapFile /usr/local/apache2/htdocs/index.html
+
CacheFile
+ yönergesinde olduÄu gibi bu dosyalarda httpd baÅlatıldıktan sonra
+ yapılacak bir deÄiÅiklikten httpdânin haberi olmayacaktır.
MMapFile
yönergesi
+ ayırdıÄı belleÄin toplam miktarı ile ilgilenmez, dolayısıyla
+ yönergenin aÅırı kullanımından kaçınmalısınız. httpdânin çocuk
+ süreçlerinin her biri bu belleÄin kendilerine ait birer kopyasını
+ yapacaÄından belleÄe eÅlenen dosyaların çok yer kaplamaması büyük
+ önem taÅımaktadır; aksi takdirde iÅletim sistemi belleÄi diske
+ takaslayacaÄından beklenen fayda saÄlanamayacaktır.
İlgili Modüller | İlgili Yönergeler |
---|---|
mod_disk_cache
modülü önbelleklemenin
- mod_cache
için disk üzerinde yapılmasını mümkün
- kılar. Bbu önbellekleme akıllıca yapılır ve önbellekteki içerik
- sadece geçerli kabul edildiÄi sürece sunulabilir.
CacheQuickHandler
+ yönergesine On
deÄerinin atandıÄı öntanımlı durumda
+ mod_cache
kullanımı, daha çok sunucunun önüne
+ vidalanmıŠönbelleklemeli bir karÅı vekile sahip olmak gibidir. Ãzgün
+ sunucunun bir harici önbellekmiŠgibi sorgulanmasını gerektirmeyen tüm
+ istekler önbellekleme modülü tarafından karÅılanacaktır. Bu durum
+ httpd'nin güvenlik modelini büyük ölçüde deÄiÅtirir.
Modül bu amaçla genelde Åöyle kullanılır:
+Olası .htaccess
dosyalarının dosya sisteminin tamamında
+ taranması çok pahalı bir iÅlem olduÄundan mod_cache
,
+ (iÅlemi hızlandırmak için) önbelleÄe almanın temel amacını kısmen
+ gözardı ederek, önbellekteki içeriÄin sunumu için gerekli
+ yetkilendirmenin olup olmadıÄı konusunda bir karar üretmez. BaÅka bir
+ deyiÅle, eÄer mod_cache
bir kısım içeriÄi önbelleÄe
+ almıÅsa içerik zaman aÅımına uÄramadıÄı sürece bu içerik önbellekten
+ sunulacaktır.
- CacheRoot /var/cache/apache/
- CacheEnable disk /
- CacheDirLevels 2
- CacheDirLength 1
-
ÃrneÄin, yapılandırmanız bir özkaynaÄa IP adresine göre eriÅime izin
+ veriyorsa bu içeriÄin önbelleÄe alınmayacaÄından emin olmalısınız.
+ Bunu CacheDisable
+ yönergesini veya mod_expires
modülünü kullanarak
+ yapabilirsiniz. Bunu yapmaz, olayı kendi haline bırakırsanız
+ mod_cache
bir karÅı vekil gibi çalıÅarak sunulan her
+ içeriÄi önbelleÄe alacak ve hangi IP adresinden gelirse gelsin her
+ istemciye bunu sunacaktır.
En önemlisi önbelleklenen dosyaların yerel olarak saklanması olup - iÅletim sisteminin saÄladıÄı bellekiçi önbelleklemeden de ayrıca - faydalanılmıŠolur. Bu bakımdan, dosyalar disk üzerinde saklansa bile - sıkça eriÅilen dosyalar iÅletim sistemi sayesinde aslında bellekten - sunulmuÅ olacaklardır.
+CacheQuickHandler
+ yönergesine Off
atandıÄı takdirde, istek iÅleme
+ aÅamalarının tamamı yerine getirilir ve güvenlik modeli deÄiÅmeden
+ kalır.
mod_disk_cache
öÄeleri önbellekte saklamak için
- istek yapılan URLânin 22 karakterlik özetini oluÅturur. Bu özet, çok
- sayıda URLânin aynı özeti oluÅturmaması için konak ismi, protokol,
- port ve varsa CGI argümanlarından oluÅur.
Ãzeti oluÅturan karakterler 64 karakterlik bir karakter kümesinden
- seçildiÄinden oluÅturulması olası farklı özet sayısı 64^22âdir.
- ÃrneÄin, bir URLânin xyTGxSMO2b68mBCykqkp1w
gibi bir
- özeti olabilir. Bu özet, bu URL ile eriÅilen dosyalar önbellek içinde
- saklanırken dosya ismi öneki olarak kullanılır. Ancak bununla
- yetinilmez ve içerik CacheDirLevels
ve CacheDirLength
yönergelerinin
- deÄerlerine göre önce dizinlere ayrılır.
CacheDirLevels
- yönergesi kaç alt seviye dizin olacaÄını belirler. ÃrneÄin, yukarıdaki
- özete sahip bir dosyanın isminin baÅına yukarıdaki yapılandırma
- örneÄine uygun olarak
- /var/cache/apache/x/y/TGxSMO2b68mBCykqkp1w
gibi bir önek
- getirilebilirdi.
Bu tekniÄin asıl amacı belli bir dizin içinde bulunabilecek
- dosyaların ve alt dizinlerin sayısını düÅük tutmaktır. Bu sayının
- büyük olması çoÄu iÅletim sisteminde baÅarımın düÅmesine sebep olur.
- CacheDirLength
- yönergesi "1" deÄeriyle kullanıldıÄında her dizin altında en fazla 64
- alt dizin veya dosya açılabilir. "2" deÄeriyle kullanıldıÄında ise bu
- sayı 64^2âye yükselir ve böyle artarak gider. Ä°yi bir sebebiniz
- olmadıkça CacheDirLength
için deÄer olarak
- "1" belirtmenizi öneririz.
CacheDirLevels
- yönergesine atanacak deÄer önbellekte saklamayı düÅündüÄünüz olası
- dosya sayısı ile ilgilidir. Yukarıdaki örnekte olduÄu gibi "2"
- deÄerini belirtirseniz, toplamda en fazla 4096 dizin oluÅturulabilir.
- 1 milyon dosyanın önbelleklendiÄi bir durumda bu, her dizinde yaklaÅık
- olarak 245 önbelleklenmiŠURL demektir.
Son kullanıcılarıın isteklerine önbellekten hizmet sunulduÄundan + önbelleÄin kendisi içerikle etkileÅime geçmek isteyenlerin veya + içeriÄi tahrif etmek isteyenlerin hedefi haline gelebilir. httpdâyi + çalıÅtıran kullanıcı tarafından her zaman önbelleÄe yazılabileceÄini + akıldan çıkarmamak önemlidir. Bu durumda alıÅılmıÅın tersine tüm + içeriÄin Apache kullanıcısı tarafından yazılamamasının saÄlanması + önerilir.
-Her URL için önbellekte en az iki dosya saklanır. Biri genellikle URL - hakkındaki temel verilerden oluÅan ".header" dosyasıdır, diÄeri ise - sunulacak içeriÄin bire bir kopyası olan ".data" dosyasıdır.
+EÄer Apache kullanıcısı, örneÄin bir CGI sürecindeki açık nedeniyle
+ tehlikeye atılırsa, önbellek hedef alınabilir.
+ mod_cache_disk
kullanılırken önbellekteki bir öÄeyi
+ deÄiÅtirmek veya önbelleÄe yeni bir öÄe eklemek görece daha
+ kolaydır.
"Vary" baÅlıÄı üzerinden içeriÄin uzlaÅıldıÄı durumda URL için bir - ".vary" dizini oluÅturulur. Bu dizin her biri farklı bir uzlaÅıma ait - çok sayıda ".data" dosyası içerebilir.
+Bu risk, Apache kullanıcısını kullanan diÄer saldırı türleriyle
+ karÅılaÅtırıldıÄında daha yüksektir. mod_cache_disk
+ kullanıyorsanız Åunları aklınızdan çıkarmayın: (1) httpd güvenlik
+ güncellemelerini takip edin ve sunucunuzu buna göre güncelleyin. (2)
+ Mümkünse suEXEC kullanarak CGI süreçlerini
+ Apache kullanıcısı olmayan bir kullanıcının aidiyetinde çalıÅtırın.
mod_disk_cache
zaman aÅımına uÄrayan önbellekli
- içeriÄi silse de önbelleÄin toplam boyu ve ne kadar boÅ bellek kaldıÄı
- hakkında bilgi vermez.
httpd bir önbellekli vekil sunucu olarak çalıÅtıÄında önbellek + zehirlenmesi adı verilen sorunla karÅılaÅılma olasılıÄı vardır. + Ãnbellek zehirlenmesi, vekil sunucunun özgün sunucudan yanlıŠ(ve + genellikle istenmeyen) içerik almasına sebep olan bir saldırı türünü + betimlemek için yaygın olarak kullanılan bir terimdir.
-Bunun yerine Apache önbellek içeriÄini düzenli aralıklarla
- temizleyebilmeniz için htcacheclean
adında bir araç
- içerir. Ãnbellek için azami ne kadar yer kullanılacaÄının ve bunun
- üzerinde htcacheclean
âi hangi sıklıkta
- çalıÅtırılacaÄının tespiti biraz karmaÅık bir iÅlem olup uygun deÄerler
- genellikle deneme yanılma yoluyla bulunur.
ÃrneÄin httpdânin çalıÅtıÄı sistemin kullandıÄı DNS sunucuları DNS + önbellek zehirlenmesinden etkilenebilecek durumdaysa, bir saldırgan + httpdânin istekleri almak için baÅvuracaÄı kaynak sunucunun yerini + deÄiÅtirebilir. DiÄer bir örnek, HTTP istek kaçakçılıÄı adı verilen + bir saldırı türüdür.
-htcacheclean
iki iÅlem kipine sahiptir. Kalıcı bir
- artalan süreci olarak çalıÅabileceÄi gibi cron üzerinden belli
- aralıklarla da çalıÅtırılabilir. Ãok büyük (onlarca GB) önbelleklerde
- htcacheclean
âin iÅini bitirmesi 1 saatten fazla
- sürebileceÄinden, cron ile çalıÅtırma durumunda aynı anda birden fazla
- kopyanın çalıÅıyor durumda olmaması için
- htcacheclean
âin çalıÅtırılma aralıÄını iyi
- belirlemek gerekir.
Bu belge HTTP istek kaçakçılıÄını derinliÄine incelenmesi için uygun + yer deÄildir (böyle kaynaklara arama motorunuzla eriÅebilirsiniz). + Bununla birlikte, vekil tarafından kaynak sunucudan alınan içeriÄi + tamamen denetim altına almak amacıyla kaynak sunucudaki bir açıÄı + istismar etmeye yönelik bir dizi istek yapılabileceÄinin olasılık + dahilinde olduÄunu bilmenizde yarar vardır.
+ -
-
- Åekil 1:
- ÃnbelleÄin büyümesi ve düzenli aralıklarla temizlenmesi.
mod_disk_cache
ne kadar önbellek alanı kullandıÄı
- ile ilgili bir bilgi vermediÄinden htcacheclean
âin
- bir temizlik sonrası yeterince büyük bir geniÅleme alanı kalacak
- Åekilde yapılandırılması önemlidir.
Vary mekanizması aynı URL'nin çok sayıda sürümünün yan yana
+ önbelleklenmesini mümkün kılar. Ä°stemci tarafından saÄlanan baÅlık
+ deÄerlerine baÄlı olarak, önbellek istemciye gönderilecek doÄru yanıtı
+ bulacaktır. Normal kullanımda olası deÄerlerin çok geniÅ olduÄunun
+ bilindiÄi durumda bir baÅlıÄı (örn, User-Agent
)
+ deÄiÅikliÄe uÄratma çabası bu mekanizmayı bir sorun haline getirebilir.
+ Sitenin tanınırlıÄına baÄlı olarak aynı URL'nin binlerce hatta
+ milyonlarca önbellek girdisi oluÅabilir ve bunlar önbellekteki diÄer
+ girdilerin yerini alabilir.
DiÄer yandan, belli bir özkaynaÄın URL'sinin her istekte
+ deÄiÅtirilmesi ihtiyacı ortaya çıkabilir. Bu normalde URL dizgesine bir
+ "cachebuster" dizgesi eklenerek yapılır. Bu içerik sunucu tarafından
+ anlamlı bir tazelik ömrüyle önbelleklenebilir olarak imlenmiÅse bu
+ girdiler kısa zamanda önbellekteki meÅru girdilerin yerini alabilir.
+ mod_cache
modülü bunun önlenmesi için CacheIgnoreURLSessionIdentifiers
+ yönergesine sahipse de bu yönerge, yoldaki vekillerin veya tarayıcı
+ önbelleklerinin aynı hizmet reddi saldırısına maruz kalmamaları için
+ dikkatle kullanılmalıdır.