1 <?xml version="1.0" encoding="UTF-8"?>
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3 <html xmlns="http://www.w3.org/1999/xhtml" lang="tr" xml:lang="tr"><head><!--
4 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
5 This file is generated from xml source: DO NOT EDIT
6 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
8 <title>Önbellek Kullanım Kılavuzu - Apache HTTP Sunucusu</title>
9 <link href="./style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
10 <link href="./style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
11 <link href="./style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" />
12 <link href="./images/favicon.ico" rel="shortcut icon" /></head>
13 <body id="manual-page"><div id="page-header">
14 <p class="menu"><a href="./mod/">Modüller</a> | <a href="./mod/directives.html">Yönergeler</a> | <a href="./faq/">SSS</a> | <a href="./glossary.html">Terimler</a> | <a href="./sitemap.html">Site Haritası</a></p>
15 <p class="apache">Apache HTTP Sunucusu Sürüm 2.3</p>
16 <img alt="" src="./images/feather.gif" /></div>
17 <div class="up"><a href="./"><img title="<-" alt="<-" src="./images/left.gif" /></a></div>
19 <a href="http://www.apache.org/">Apache</a> > <a href="http://httpd.apache.org/">HTTP Sunucusu</a> > <a href="http://httpd.apache.org/docs/">Belgeleme</a> > <a href="./">Sürüm 2.3</a></div><div id="page-content"><div id="preamble"><h1>Önbellek Kullanım Kılavuzu</h1>
21 <p><span>Mevcut Diller: </span><a href="./en/caching.html" hreflang="en" rel="alternate" title="English"> en </a> |
22 <a href="./fr/caching.html" hreflang="fr" rel="alternate" title="Français"> fr </a> |
23 <a href="./tr/caching.html" title="Türkçe"> tr </a></p>
25 <div class="outofdate">Bu çeviri güncel olmayabilir. Son değişiklikler için İngilizce sürüm geçerlidir.</div>
27 <p>Bu belge <code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code>,
28 <code class="module"><a href="./mod/mod_disk_cache.html">mod_disk_cache</a></code>, <code class="module"><a href="./mod/mod_mem_cache.html">mod_mem_cache</a></code>,
29 <code class="module"><a href="./mod/mod_file_cache.html">mod_file_cache</a></code> modülleri ve <a href="programs/htcacheclean.html">htcacheclean</a> için bir başvuru
30 kılavuzu niteliğindedir. HTTP sunucusu ve vekil olarak çalışmada
31 işlemleri hızlandırmak için bilinen sorunlar ve yanlış
32 yapılandırmalardan kaçınarak Apache’nin önbellekleme özelliklerinin
33 nasıl kullanılacağı açıklanmıştır.</p>
35 <div id="quickview"><ul id="toc"><li><img alt="" src="./images/down.gif" /> <a href="#introduction">Giriş</a></li>
36 <li><img alt="" src="./images/down.gif" /> <a href="#overview">Önbelleklemeye Bir Bakış</a></li>
37 <li><img alt="" src="./images/down.gif" /> <a href="#security">Güvenlik Kaygıları</a></li>
38 <li><img alt="" src="./images/down.gif" /> <a href="#filehandle">Dosya Tanıtıcı Önbelleklemesi</a></li>
39 <li><img alt="" src="./images/down.gif" /> <a href="#inmemory">Sistem Belleğinde Önbellekleme</a></li>
40 <li><img alt="" src="./images/down.gif" /> <a href="#disk">Disk Üzerinde Önbellekleme</a></li>
42 <div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
44 <h2><a name="introduction" id="introduction">Giriş</a></h2>
47 <p>Apache HTTP sunucusunun 2.2 sürümünden itibaren
48 <code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code> ve <code class="module"><a href="./mod/mod_file_cache.html">mod_file_cache</a></code> modülleri
49 deneysel olmaktan çıkarılmış ve üretim amaçlı kullanılabileceğine karar
50 verilmiştir. Bu önbellekleme mimarileri gerek HTTP sunucusu gerekse
51 vekili olarak çalışmada HTTP işlemlerini hızlandırmak anlamında sunucuya
54 <p><code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code>, ortam sağlayıcı modülleri olan
55 <code class="module"><a href="./mod/mod_mem_cache.html">mod_mem_cache</a></code> ve <code class="module"><a href="./mod/mod_disk_cache.html">mod_disk_cache</a></code> ile
56 birlikte HTTP önbelleklemesini akıllıca yerine getirir. İçeriğin kendisi
57 önbellekte saklanırken <code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code> içeriğin
58 önbelleklenebilmesini denetim altında tutan HTTP başlıkları ve
59 seçenekleri ile ilgilenir. Yerel ve vekalet edilen içeriğin her ikisinin
60 de aynı anda işlem görmesi sağlanabilir. <code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code>,
61 vekalet edilen içeriğe, devingen yerel içeriğe veya zamanla değişen
62 yerel dosyalara erişimi hızlandırma ihtiyacına yönelik olarak hem basit
63 hem de karmaşık önbellekleme yapılandırmalarını mümkün kılar.</p>
65 <p><code class="module"><a href="./mod/mod_file_cache.html">mod_file_cache</a></code> ise biraz daha temel ancak bazen daha
66 kullanışlı olabilen bir önbellekleme şekli ile ilgilenir. URL’lerin
67 önbelleklenebilmesini mümkün kılmanın karmaşıklığıyla boğuşmak yerine
68 <code class="module"><a href="./mod/mod_file_cache.html">mod_file_cache</a></code>, dosyaların Apache’nin son başlatıldığı
69 zamanki durumlarını saklamak için dosyaların belleğe eşlenmek üzere ele
70 alınmasını sağlar. Böylelikle, <code class="module"><a href="./mod/mod_file_cache.html">mod_file_cache</a></code>, çok sık
71 değişmeyen durağan yerel dosyalara erişim zamanını azaltmaya yardım
74 <p><code class="directive"><a href="./mod/mod_file_cache.html#cachefile">CacheFile</a></code> ve <code class="directive"><a href="./mod/mod_file_cache.html#mmapstatic">MMapStatic</a></code> yönergeleri ile ilgili
75 bölümlerde anlatılanları saymazsak <code class="module"><a href="./mod/mod_file_cache.html">mod_file_cache</a></code>, bu
76 belgenin asıl konusu olan <code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code> önbellekleme
77 mimarisine göre daha basit bir önbellekleme gerçeklenimidir.</p>
79 <p>Bu belgeden azami yararı sağlayabilmek için temel bir HTTP bilginizin
80 olması ve <a href="urlmapping.html">URL’lerin Dosya Sistemine
81 Eşlenmesi</a> ile <a href="content-negotiation.html">İçerik Uzlaşımı</a>
82 belgelerini okumuş olmanız gerekir.</p>
84 </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
86 <h2><a name="overview" id="overview">Önbelleklemeye Bir Bakış</a></h2>
90 <table class="related"><tr><th>İlgili Modüller</th><th>İlgili Yönergeler</th></tr><tr><td><ul><li><code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code></li><li><code class="module"><a href="./mod/mod_mem_cache.html">mod_mem_cache</a></code></li><li><code class="module"><a href="./mod/mod_disk_cache.html">mod_disk_cache</a></code></li><li><code class="module"><a href="./mod/mod_file_cache.html">mod_file_cache</a></code></li></ul></td><td><ul><li><code class="directive"><a href="./mod/mod_cache.html#cacheenable">CacheEnable</a></code></li><li><code class="directive"><a href="./mod/mod_cache.html#cachedisable">CacheDisable</a></code></li><li><code class="directive"><a href="./mod/mod_file_cache.html#mmapstatic">MMapStatic</a></code></li><li><code class="directive"><a href="./mod/mod_file_cache.html#cachefile">CacheFile</a></code></li><li><code class="directive"><a href="./mod/mod_file_cache.html#cachefile">CacheFile</a></code></li><li><code class="directive"><a href="./mod/core.html#usecanonicalname">UseCanonicalName</a></code></li><li><code class="directive"><a href="./mod/mod_negotiation.html#cachenegotiateddocs">CacheNegotiatedDocs</a></code></li></ul></td></tr></table>
92 <p>Bir istek sonuçlanıncaya kadar <code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code> modülünde iki
93 aşamadan geçer. İlkinde <code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code> bir URL eşleme modülü
94 olarak çalışır ve URL önbellekteyse ve zaman aşımına uğramamışsa isteğin
95 doğrudan <code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code> tarafından sunulmasını sağlar.</p>
97 <p>Yani isteğin sunumu sırasında, isteğin örneğin,
98 <code class="module"><a href="./mod/mod_proxy.html">mod_proxy</a></code> veya <code class="module"><a href="./mod/mod_rewrite.html">mod_rewrite</a></code> tarafından
99 ele alınması gerekse bile bu yapılmaz. Önbelleklenen içerik ilk alındığı
102 <p>Eğer URL önbellekte yoksa, <code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code> isteği bir <a href="filter.html">süzgece</a> tabi tutar. Apache içeriğin varlığını
103 saptamışsa içeriğin süzgeç tarafından sunulmasını sağladıktan sonra,
104 süzgeç içeriğin önbelleklenebileceğini saptamışsa gelecekte sunmak üzere
105 içeriği önbelleğe kaydeder.</p>
107 <p>Eğer URL önbellekte bulunmuş fakat içeriğin zaman aşımına uğradığı
108 anlaşılmışsa süzgeç yine de eklenir fakat bu kez
109 <code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code> önbellekteki sürümün hala geçerli olup
110 olmadığını saptamak için kaynağın bulunduğu sunucuya bir koşullu istek
111 gönderir. Önbellekteki sürüm hala geçerliyse temel verileri güncellenir
112 ve istek önbellekten sunulur. Önbellekteki sürüm artık geçerli değilse,
113 önbellekteki sürüm silinir ve süzgeç güncel içeriği önbelleğe kaydeder
114 ve isteği oradan sunar.</p>
116 <h3>Önbelleğin Hızlandırılması</h3>
119 <p>Yerel içerik önbelleklendiği takdirde <code class="directive"><a href="./mod/core.html#usecanonicalname">UseCanonicalName</a></code> yönergesine <code>On</code>
120 değeri atanmışsa önbellekten sunulan sayfa sayısında büyük bir artış
121 olduduğu görülür. Bunun sebebi içeriği sunan sanal konağın isminin
122 önbellek anahtarının bir parçası olarak kullanılmasıdır. Yönergeye
123 <code>On</code> değerini atamak suretiyle çok isimli ve rumuzlu sanal
124 konaklar için farklı önbellek girdileri oluşturulmaz, bunun yerine her
125 meşru sanal konak için ayrı bir önbellek tutulur.</p>
127 <p>Önbellekleme, URL’nin dosya ismine dönüştürülmesi aşamasında
128 gerçekleştiğinden önbelleklenen belgeler sadece URL isteklerine bir
129 yanıt olarak sunulurlar. <a href="howto/ssi.html">Sunucu Taraflı
130 İçerikleri</a> kullanmazsanız genellikle bunun fazla bir önemi
133 <div class="example"><p><code>
134 <!-- Bu içerik önbelleklenebilir. --><br />
135 <!--#include virtual="/dipnot.html" --><br />
137 <!-- Bu içerik önbelleklenemez. --><br />
138 <!--#include file="/bir/yol/dipnot.html" -->
141 <p>Sunucu Taraflı İçerikleri kullanıyorsanız ve önbelleklemenin
142 sağladığı hız artışından da yaralanmak istiyorsanız içerik
143 yerleştirmek için <code>virtual</code> içerik türünü kullanınız.</p>
146 <h3>Zaman Aşımı Süreleri</h3>
149 <p>Önbellekli öğeler için öntanımlı zaman aşımı süresi bir saat olmakla
150 birlikte <code class="directive"><a href="./mod/mod_cache.html#cachedefaultexpire">CacheDefaultExpire</a></code>
151 yönergesi kullanılarak bu değer kolaylıkla geçersiz kılınabilir. Bu
152 öntanımlı değer sadece içeriğin özgün kaynağı bir zaman aşımı süresi
153 veya son değişiklik tarihi belirtmediği takdirde kullanılır.</p>
155 <p>Bir yanıt <code>Expires</code> başlığını değil de
156 <code>Last-Modified</code> başlığını içeriyorsa
157 <code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code> zaman aşımı süresini <code class="directive"><a href="./mod/mod_cache.html#cachelastmodifiedfactor">CacheLastModifiedFactor</a></code> yönergesinin
158 nasıl kullanıldığına bakarak saptar.</p>
160 <p>Yerel içerik için, zaman aşımı süresini hassas olarak ayarlamak
161 gerekirse <code class="module"><a href="./mod/mod_expires.html">mod_expires</a></code> kullanılabilir.</p>
163 <p>Zaman aşımı süresinin üst sınırı <code class="directive"><a href="./mod/mod_cache.html#cachemaxexpire">CacheMaxExpire</a></code> yönergesi ile
168 <h3>Şartlı İstekler için Özlü Kılavuz</h3>
171 <p>Önbellekteki içerik zaman aşımına uğrayıp, içerik sağlayıcıya veya
172 arka sunucuya özgün isteği aktarmak yerine ayrı bir istek yapılması
173 gereği Apache’nin şartlı bir istek yapması sonucunu doğurur.</p>
175 <p>Bir istemcinin veya önbelleğin aynı içeriğin farklı sürümleri
176 arasında ayrım yapabilmesi için HTTP protokolü bazı başlık alanları
177 önerir. Örneğin, "Etag:" başlığıyla sunulan bir özkaynak için
178 "If-None-Match:" başlığıyla bir şartlı istek yapmak mümkün olduğu gibi
179 özkaynak "Last-Modified:" başlığıyla sunuluyorsa şartlı istek
180 "If-Modified-Since:" başlığıyla yapılabilir, vesaire.</p>
182 <p>Böyle bir şartlı istek yapıldığında yanıt koşulun içerikle eşleşip
183 eşleşmediğine bağlı olarak farklı olur. Eğer istek bir
184 "If-Modified-Since:" başlığıyla yapılmışsa ve içerik istekte
185 belirtilen zamandan önce değiştirilmemişse kısa ve öz olarak bir "304
186 Not Modified" (Bir değişiklik yok) iletisiyle yanıt verilir.</p>
188 <p>Aksi takdirde bir şartlı istek yapılmamış gibi içeriğin kendisi
191 <p>Önbellekleme ile ilgili şartlı istekler çifte yarar sağlar. Birinci
192 olarak, böyle bir istek arkadaki sunucuya yapılıyorsa ve iki içerik de
193 aynıysa bunu saptamak kolay olur ve özkaynağın tamamını aktarma
194 külfetinden kurtulunur.</p>
196 <p>İkinci olarak, şartlı istekler arka sunucuda normalden daha az
197 faaliyete sebep olur. Durağan dosyalar için bu genellikle
198 <code>stat()</code> veya benzeri bir sistem çağrısıyla dosya
199 boyutları ve değişiklik zamanına bakmak şeklinde gerçekleşir.
200 Böylelikle Apache yerel içeriği önbellekliyor olsa bile ve hatta
201 içerik zaman aşımına da uğrasa önbellekteki dosyada bir değişiklik
202 olmadığı takdirde içeriği önbellekten sunmak daha hızlı olacaktır.
203 Çünkü dosyayı önbellekten okumak, arka sunucudan okumaktan daha
204 hızlıdır (bu, bellekten okumayla diskten okumayı karşılaştırmak
208 <h3>Neler Önbelleklenebilir?</h3>
211 <p>Evvelce bahsedildiği gibi Apache’de iki tür önbellekleme yapılır ve
212 bunlar farklı yöntemlerle çalışır. <code class="module"><a href="./mod/mod_file_cache.html">mod_file_cache</a></code>
213 önbelleklemesinde dosyalar Apache başlatıldığı zamanki içerikle
214 saklanır. Bu modül tarafından önbelleğe alınmış bir dosya için istek
215 geldiğinde isteğin yolu kesilip önbellekteki dosya sunulur.</p>
217 <p><code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code> önbelleklemesinde işler biraz daha
218 karışıktır. Bir isteğe hizmet sunulurken istenen içerik evvelce
219 önbelleklenmemişse önbellekleme modülü önce içeriğin
220 önbelleklenebilirliğine bakar. Bir yanıtın önbelleklenebilirliğini
221 belirleyen koşullar şunlardır:</p>
224 <li>Önbellekleme bu URL ile etkin kılınabilmelidir. <code class="directive"><a href="./mod/mod_cache.html#cacheenable">CacheEnable</a></code> ve <code class="directive"><a href="./mod/mod_cache.html#cachedisable">CacheDisable</a></code> yönergelerine bakınız.</li>
226 <li>Yanıtın HTTP durum kodu 200, 203, 300, 301 veya 410 olmalıdır.</li>
228 <li>İstek bir HTTP GET isteği olmalıdır.</li>
230 <li>İstek bir "Authorization:" başlığı içeriyorsa yanıt önbelleğe
233 <li>Eğer yanıt bir "Authorization:" başlığı içeriyorsa ayrıca
234 "Cache-Control:" başlığında da "s-maxage", "must-revalidate" veya
235 "public" değerlerinden birini içermelidir.</li>
237 <li>Eğer URL (GET yöntemi kullanan bir HTML formunun yaptığı gibi) bir
238 sorgu dizgesi içeriyorsa yanıt, RFC2616’nın 13.9. bölümünde
239 açıklandığı gibi bir "Expires:" başlığı içermedikçe yanıt içeriği
240 önbelleğe alınmayacaktır.</li>
242 <li><code class="directive"><a href="./mod/mod_cache.html#cacheignorenolastmod">CacheIgnoreNoLastMod</a></code>
243 yönergesinin kullanımını gerektiren bir durum olmadıkça 200 durum
244 koduna sahip bir yanıtın "Etag", "Last-Modified" ve "Expires"
245 başlıklarından en az birini içermesi gerekir.</li>
247 <li><code class="directive"><a href="./mod/mod_cache.html#cachestoreprivate">CacheStorePrivate</a></code>
248 yönergesinin kullanımını gerektiren bir durum olmadıkça yanıt
249 "private" değerli bir "Cache-Control:" başlığı içerdiği takdirde
250 yanıtın içeriği önbelleğe alınmayacaktır.</li>
252 <li>Benzer şekilde, <code class="directive"><a href="./mod/mod_cache.html#cachestorenostore">CacheStoreNoStore</a></code> yönergesi kullanılmamışsa yanıt
253 "no-store" değerli bir "Cache-Control:" başlığı içeriyorsa yanıt
254 içeriği önbelleğe alınmayacaktır.</li>
256 <li>Herşeyle eşleşen "*" değerli bir "Vary:" başlığı içeren bir
257 yanıtın içeriği önbelleğe alınmaz.</li>
261 <h3>Neler Önbelleklenmemeli?</h3>
264 <p>Kısaca, istek zamana aşırı bağımlıysa ya da istek kısmen bile olsa
265 HTTP uzlaşımıyla bağdaşmıyorsa önbelleğe alınmamalıdır.</p>
267 <p>İçeriği istekçinin IP adresine bağlı olarak değişen veya her beş
268 dakikada bir değişikliğe uğrayan bir devingen içeriğe sahipseniz böyle
269 bir içerik asla önbelleğe alınmamalıdır.</p>
271 <p>Diğer taraftan, içerik HTTP başlığındaki değerlere bağlı olarak
272 değişiyorsa içeriğin bir "Vary" başlığı kullanılarak akıllıca
273 önbelleklenmesi imkanı mevcuttur.</p>
276 <h3>Değişken/Uzlaşımlı İçerik</h3>
279 <p>"Vary" başlıklı bir yanıt arka sunucudan istenirken
280 <code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code> tarafından alınmışsa akıllıca ele alınmaya
281 çalışılacaktır. Mümkünse, <code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code> gelecekte bu
282 içerikle ilgili isteklerin "Vary" başlıklı yanıtları olacağını
283 saptayacak ve önbellekten doğru içerikle yanıt verecektir.</p>
285 <p>Örneğin, bir yanıt şöyle bir başlık ile alınmışsa,</p>
287 <div class="example"><p><code>
288 Vary: negotiate,accept-language,accept-charset
291 <p><code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code> sadece accept-language ve accept-charset
292 başlıkları özgün istekle eşleşen önbellekli içeriği sunacaktır.</p>
295 </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
296 <div class="section">
297 <h2><a name="security" id="security">Güvenlik Kaygıları</a></h2>
300 <h3>Erişim Denetimi ve Yetkilendirme</h3>
303 <p><code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code> çoğunlukla bir karşı vekile sahip olmak
304 amacıyla kullanılır. Arka sunucunun sorgulanmasını gerektirmeyen tüm
305 istekler önbellekleme modülü tarafından karşılanacaktır. Yerel
306 özkaynakların önbelleklenmesi söz konusu olduğunda Apache’nin güvenlik
307 modeli büyükçe bir değişikliğe uğrar.</p>
309 <p>Olası <code>.htaccess</code> dosyalarının dosya sisteminin tamamında
310 taranması çok pahalı bir işlem olduğundan <code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code>,
311 (işlemi hızlandırmak için) önbelleğe almanın temel amacını kısmen
312 gözardı ederek, önbellekteki içeriğin sunumu için gerekli
313 yetkilendirmenin olup olmadığı konusunda bir karar üretmez. Başka bir
314 deyişle, eğer <code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code> bir kısım içeriği önbelleğe
315 almışsa içerik zaman aşımına uğramadığı sürece bu içerik önbellekten
318 <p>Örneğin, yapılandırmanız bir özkaynağa IP adresine göre erişime izin
319 veriyorsa bu içeriğin önbelleğe alınmayacağından emin olmalısınız.
320 Bunu <code class="directive"><a href="./mod/mod_cache.html#cachedisable">CacheDisable</a></code>
321 yönergesini veya <code class="module"><a href="./mod/mod_expires.html">mod_expires</a></code> kullanarak
322 yapabilirsiniz. Bunu yapmaz, olayı kendi haline bırakırsanız
323 <code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code> bir karşı vekil gibi çalışarak sunulan her
324 içeriği arabelleğe alacak ve hangi IP adresinden gelirse gelsin her
325 istemciye bunu sunacaktır.</p>
328 <h3>Yerel İstismarcılar</h3>
331 <p>Son kullanıcılarıın isteklerine önbellekten hizmet sunulduğundan
332 önbelleğin kendisi içerikle etkileşime geçmek isteyenlerin veya
333 içeriği tahrif etmek isteyenlerin hedefi haline gelebilir. Apache’yi
334 çalıştıran kullanıcı tarafından her zaman önbelleğe yazılabileceğini
335 akıldan çıkarmamak önemlidir. Bu durumda alışılmışın tersine tüm
336 içeriğin Apache kullanıcısı tarafından yazılamamasının sağlanması
339 <p>Eğer Apache kullanıcısı, örneğin bir CGI sürecindeki açık nedeniyle
340 tehlikeye atılırsa, önbellek hedef alınabilir.
341 <code class="module"><a href="./mod/mod_disk_cache.html">mod_disk_cache</a></code> kullanılırken önbellekteki bir öğeyi
342 değiştirmek veya önbelleğe yeni bir öğe eklemek görece daha
345 <p>Bu risk, Apache kullanıcısını kullanan diğer saldırı türleriyle
346 karşılaştırıldığında daha yüksektir. <code class="module"><a href="./mod/mod_disk_cache.html">mod_disk_cache</a></code>
347 kullanıyorsanız şunları aklınızdan çıkarmayın: (1) Apache güvenlik
348 güncellemelerini takip edin ve sunucunuzu buna göre güncelleyin. (2)
349 Mümkünse <a href="suexec.html">suEXEC</a> kullanarak CGI süreçlerini
350 Apache kullanıcısı olmayan bir kullanıcının aidiyetinde çalıştırın.</p>
354 <h3>Önbellek Zehirlenmeleri</h3>
357 <p>Apache bir önbellekli vekil sunucu olarak çalıştığında önbellek
358 zehirlenmesi adı verilen sorunla karşılaşılma olasılığı vardır.
359 Önbellek zehirlenmesi, vekil sunucunun arka sunucudan yanlış (ve
360 genellikle istenmeyen) içerik almasına sebep olan bir saldırı türünü
361 betimlemek için yaygın olarak kullanılan bir terimdir.</p>
363 <p>Örneğin Apache’nin çalıştığı sistemin kullandığı DNS sunucuları DNS
364 önbellek zehirlenmesinden etkilenebilecek durumdaysa, bir saldırgan
365 Apache’nin istekleri almak için başvuracağı kaynak sunucunun yerini
366 değiştirebilir. Diğer bir örnek, HTTP istek kaçakçılığı adı verilen
367 bir saldırı türüdür.</p>
369 <p>Bu belge HTTP istek kaçakçılığını derinliğine incelenmesi için uygun
370 yer değildir (böyle kaynaklara arama motorunuzla erişebilirsiniz).
371 Bununla birlikte, vekil tarafından kaynak sunucudan alınan içeriği
372 tamamen denetim altına almak amacıyla kaynak sunucudaki bir açığı
373 istismar etmeye yönelik bir dizi istek yapılabileceğinin olasılık
374 dahilinde olduğunu bilmenizde yarar vardır.</p>
376 </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
377 <div class="section">
378 <h2><a name="filehandle" id="filehandle">Dosya Tanıtıcı Önbelleklemesi</a></h2>
381 <table class="related"><tr><th>İlgili Modüller</th><th>İlgili Yönergeler</th></tr><tr><td><ul><li><code class="module"><a href="./mod/mod_file_cache.html">mod_file_cache</a></code></li><li><code class="module"><a href="./mod/mod_mem_cache.html">mod_mem_cache</a></code></li></ul></td><td><ul><li><code class="directive"><a href="./mod/mod_file_cache.html#cachefile">CacheFile</a></code></li><li><code class="directive"><a href="./mod/mod_cache.html#cacheenable">CacheEnable</a></code></li><li><code class="directive"><a href="./mod/mod_cache.html#cachedisable">CacheDisable</a></code></li></ul></td></tr></table>
383 <p>Bir dosyanın açılması işlemi, özellikle de ağ dosya sistemlerinde
384 bulunan dosyalar için önemli bir gecikme kaynağı olabilir. Önbellekte,
385 çok sunulan dosyaların kendilerinin değil, açık dosya tanıtıcılarının
386 saklanması Apache’yi bu tür gecikmelerden koruyabilir. Apache’de iki tür
387 dosya tanıtıcı önbelleklemesi yapılabilmektedir.</p>
389 <h3><code>CacheFile</code> yönergesi ile</h3>
392 <p>Apache’de mevcut önbelleklemenin en temel şekli
393 <code class="module"><a href="./mod/mod_file_cache.html">mod_file_cache</a></code> tarafından sağlanan dosya tanıtıcı
394 önbelleklemesidir. Bu önbellek türü dosyaların kendilerini değil açık
395 dosya tanıtıcılarının bir listesini saklar. Dosyaların bu anlamda
396 önbelleklenmesi, <code class="directive"><a href="./mod/mod_file_cache.html#cachefile">CacheFile</a></code> yönergesi yapılandırma dosyasında belirtilerek
399 <p><code class="directive"><a href="./mod/mod_file_cache.html#cachefile">CacheFile</a></code> yönergesi
400 belirtilen dosyanın Apache başlatıldığında açılmasını ve dosya için
401 yapılan sonraki her istekte bu dosya tanıtıcısının kullanılmasını
404 <div class="example"><p><code>
405 CacheFile /usr/local/apache2/htdocs/index.html
408 <p>Büyük miktarda dosyayı bu anlamda önbelleklemeyi tasarlıyorsanız
409 işletim sisteminizin açık dosya tanıtıcılarının sayısı ile ilgili
410 sınırlamasını uygun bir değere ayarlamanız gerekebilir.</p>
412 <p><code class="directive"><a href="./mod/mod_file_cache.html#cachefile">CacheFile</a></code> yönergesini
413 kullandığınız takdirde dosya içeriğindeki değişiklikleri anında isteğe
414 yansıtamazsınız. Apache dosyayı ilk başlatıldığındaki haliyle
417 <p>Eğer Apache çalışırken dosya silinmişse Apache ilk başlatıldığındaki
418 haline ilişkin dosya tanıtıcıyı sağlamaya ve dolayısıyla dosya
419 içeriğini sunmaya devam edecektir. Yani, dosya silinmiş ve artık dosya
420 sisteminde görünmüyor olsa bile Apache durdurulup dosya tanıtıcıları
421 kapanmadıkça dosyaların silinmesiyle açılan yer serbest
425 <h3><code>CacheEnable</code> yönergesi ile</h3>
428 <p><code class="module"><a href="./mod/mod_mem_cache.html">mod_mem_cache</a></code> modülünün ayrıca, <code class="directive"><a href="./mod/mod_cache.html#cacheenable">CacheEnable</a></code> yönergesi üzerinden etkin
429 kılınabilen kendine özgü bir dosya tanıtıcı önbellekleme şeması
432 <div class="example"><p><code>
436 <p><code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code>’nin devreye girdiği her işlemde olduğu
437 gibi bu tür dosya tanıtıcı önbelleklemesi de akıllıca yapılır ve
438 önbellekteki içerik zaman aşımına uğradığı halde sunulmaya devam
441 </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
442 <div class="section">
443 <h2><a name="inmemory" id="inmemory">Sistem Belleğinde Önbellekleme</a></h2>
446 <table class="related"><tr><th>İlgili Modüller</th><th>İlgili Yönergeler</th></tr><tr><td><ul><li><code class="module"><a href="./mod/mod_mem_cache.html">mod_mem_cache</a></code></li><li><code class="module"><a href="./mod/mod_file_cache.html">mod_file_cache</a></code></li></ul></td><td><ul><li><code class="directive"><a href="./mod/mod_cache.html#cacheenable">CacheEnable</a></code></li><li><code class="directive"><a href="./mod/mod_cache.html#cachedisable">CacheDisable</a></code></li><li><code class="directive"><a href="./mod/mod_file_cache.html#mmapstatic">MMapStatic</a></code></li></ul></td></tr></table>
448 <p>İçeriğin sistem belleğinden sunulması içerik sunmanın evrensel olarak
449 en hızlı yoludur. Dosyaların bir disk denetleyiciden okunması ya da daha
450 kötüsü uzak bir ağdan okunması bellekten okumayla karşılaştırılamayacak
451 ölçüde yavaş işlemlerdir. Disk denetleyiciler genellikle fiziksel
452 süreçleri denetlerler. Ağ erişimi ise band genişliği sınırlamalarından
453 etkilenir. Halbuki bellek erişimi sadece nano saniyeler mertebesinde
456 <p>Sistem belleği en pahalı saklama ortamı olması sebebiyle en verimli
457 şekilde kullanımı önemlidir. Dosyaları sistem belleğinde saklamakla
458 sistemin kullanabileceği bellek miktarını azaltmış olursunuz. İşletim
459 sistemi önbelleklemesinde göreceğiniz gibi bu öyle basit bir konu
460 değildir. Apache’nin kendi kullandığı belleğin bir kısmını önbellek
461 olarak ayırırken çok fazla bellek kullanmamak önemlidir. Aksi takdirde
462 işletim sistemi belleğin yetmediği noktada belleği diske
463 takaslayacağından istenen başarım artışı sağlanamayacaktır.</p>
465 <h3>İşletim Sistemi Önbelleklemesi</h3>
468 <p>Günümüz iştetim sistemlerinin hemen hemen tamamında bellek içi
469 dosya/veri saklama işlemlerini çekirdek yönetir. Bu güçlü bir
470 özelliktir ve işletim sistemlerinin büyük çoğunluğu bunu böyle yapar.
471 Örneğin, Linux’ta bir dosyanın ilk defa okunduğunda ve ikinci kez
472 okunduğunda işlemcinin ne kadar meşgul edildiğine bakalım:</p>
474 <div class="example"><p><code>
475 colm@coroebus:~$ time cat testfile > /dev/null<br />
479 colm@coroebus:~$ time cat testfile > /dev/null<br />
485 <p>Küçük bir dosya için bile okuma süresi bakımından büyük fark ortaya
486 çıkmaktadır. Bunun sebebi çekirdeğin dosya içeriğini bellek daha
487 güncel amaçlar için lazım olana dek bellek içinde saklamasıdır.</p>
489 <p>Sisteminizde yeterince yedek bellek olduğundan eminseniz, bu
490 önbellekte daha fazla dosya saklanacağından emin olabilirsiniz.
491 Bundan, önbelleğin sistem belleğinde verimli biçimde tutulması için
492 Apache’de ek bir yapılandırmaya gidilmesinin gerekmediği sonucu
495 <p>Bundan başka, işletim sistemi dosyaların değiştiği ve silindiği
496 zamanları bildiğinden bu tür dosyaların içerikleri gerektiğinde
497 önbellekten kendiliğinden silinmiş olur. Bellek içinde dosya saklarken
498 dosyaların değiştirilme zamanlarını bilme olanağı olmadığından bu
499 durum Apache’ye büyük yarar sağlar.</p>
502 <p>İşletim sisteminin dosyaların önbelleklenmesi için sağladığı bunca
503 yarara ve başarım artışına karşın bellek içinde dosya önbelleklemenin
504 Apache tarafından yerine getirilmesinin daha iyi olacağı bazı durumlar
507 <p>Öncelikle, işletim sistemi sadece bildiği dosyaları önbellekler (veya
508 önbelleklediği dosyaları bilir). Eğer Apache’yi bir vekil sunucu olarak
509 çalıştırıyorsanız, önbelleklediğiniz dosyalar yerel olarak saklanmadan
510 uzaktan sunulabilir. Ancak bellekiçi önbelleklemenin sağladığı hız
511 artışının dayanılmaz çekiciliğine karşı koyamıyorsanız, Apache’nin kendi
512 bellekiçi önbelleklemesine ihtiyacınız var demektir.</p>
514 <h3><code>MMapStatic</code> yönergesi ile</h3>
517 <p><code class="module"><a href="./mod/mod_file_cache.html">mod_file_cache</a></code> modülü, bir durağan dosyanın
518 içeriğini sunucunun başlatılması sırasında (mmap sistem çağrısıyla)
519 belleğe eşlenmesini mümkün kılmak için <code class="directive"><a href="./mod/mod_file_cache.html#mmapstatic">MMapStatic</a></code> yönergesini sağlar.
520 Apache bu dosyaya gelecek sonraki istekler için dosyanın bellekiçi
521 içeriğini kullanacaktır.</p>
523 <div class="example"><p><code>
524 MMapStatic /usr/local/apache2/htdocs/index.html
527 <p><code class="directive"><a href="./mod/mod_file_cache.html#cachefile">CacheFile</a></code> yönergesinde
528 olduğu gibi bu dosyalarda Apache başlatıldıktan sonra yapılacak bir
529 değişiklikten Apache’nin haberi olmayacaktır.</p>
531 <p><code class="directive"><a href="./mod/mod_file_cache.html#mmapstatic">MMapStatic</a></code> yönergesi
532 ayırdığı belleğin toplam miktarı ile ilgilenmez, dolayısıyla
533 yönergenin aşırı kullanımından kaçınmalısınız. Apache’nin çocuk
534 süreçlerinin her biri bu belleğin kendilerine ait birer kopyasını
535 yapacağından belleğe eşlenen dosyaların çok yer kaplamaması büyük önem
536 taşımaktadır; aksi takdirde işletim sistemi belleği diske
537 takaslayacağından beklenen fayda sağlanamayacaktır.</p>
540 <h3><code>mod_mem_cache</code> modülü ile</h3>
543 <p><code class="module"><a href="./mod/mod_mem_cache.html">mod_mem_cache</a></code> modülü HTTP belirtimine uygun olarak
544 bellekiçi önbelleklemeyi akıllıca uygular. Ayrıca yüksek belleği
545 doğrudan kullanabildiğinden <var>MMap</var> desteği olmayan
546 sistemlerde bile bellekiçi önbellekleme yapabilir.</p>
548 <p>Bu tür önbellekleme şöyle etkin kılınabilir:</p>
550 <div class="example"><p><code>
551 # Bellekiçi önbelleklemeyi etkin kılalım<br />
552 CacheEnable mem /<br />
554 # Önbellek 1 Megabayttan büyük olmasın<br />
558 </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
559 <div class="section">
560 <h2><a name="disk" id="disk">Disk Üzerinde Önbellekleme</a></h2>
563 <table class="related"><tr><th>İlgili Modüller</th><th>İlgili Yönergeler</th></tr><tr><td><ul><li><code class="module"><a href="./mod/mod_disk_cache.html">mod_disk_cache</a></code></li></ul></td><td><ul><li><code class="directive"><a href="./mod/mod_cache.html#cacheenable">CacheEnable</a></code></li><li><code class="directive"><a href="./mod/mod_cache.html#cachedisable">CacheDisable</a></code></li></ul></td></tr></table>
565 <p><code class="module"><a href="./mod/mod_disk_cache.html">mod_disk_cache</a></code> modülü önbelleklemenin
566 <code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code> için disk üzerinde yapılmasını mümkün kılar.
567 <code class="module"><a href="./mod/mod_mem_cache.html">mod_mem_cache</a></code> modülünde olduğu gibi bu önbellekleme de
568 akıllıca yapılır ve önbellekteki içerik sadece geçerli kabul edildiği
569 sürece sunulabilir.</p>
571 <p>Modül bu amaçla genelde şöyle kullanılır:</p>
573 <div class="example"><p><code>
574 CacheRoot /var/cache/apache/<br />
575 CacheEnable disk /<br />
576 CacheDirLevels 2<br />
580 <p>En önemlisi önbelleklenen dosyaların yerel olarak saklanması olup
581 işletim sisteminin sağladığı bellekiçi önbelleklemeden de ayrıca
582 faydalanılmış olur. Bu bakımdan, dosyalar disk üzerinde saklansa bile
583 sıkça erişilen dosyalar işletim sistemi sayesinde aslında bellekten
584 sunulmuş olacaklardır.</p>
586 <h3>Önbellekte Saklamanın Anlamı</h3>
589 <p><code class="module"><a href="./mod/mod_disk_cache.html">mod_disk_cache</a></code> öğeleri önbellekte saklamak için
590 istek yapılan URL’nin 22 karakterlik özetini oluşturur. Bu özet, çok
591 sayıda URL’nin aynı özeti oluşturmaması için konak ismi, protokol,
592 port ve varsa CGI argümanlarından oluşur.</p>
594 <p>Özeti oluşturan karakterler 64 karakterlik bir karakter kümesinden
595 seçildiğinden oluşturulması olası farklı özet sayısı 64^22’dir.
596 Örneğin, bir URL’nin <code>xyTGxSMO2b68mBCykqkp1w</code> gibi bir
597 özeti olabilir. Bu özet, bu URL ile erişilen dosyalar önbellek içinde
598 saklanırken dosya ismi öneki olarak kullanılır. Ancak bununla
599 yetinilmez ve içerik <code class="directive"><a href="./mod/mod_disk_cache.html#cachedirlevels">CacheDirLevels</a></code> ve <code class="directive"><a href="./mod/mod_disk_cache.html#cachedirlength">CacheDirLength</a></code> yönergelerinin
600 değerlerine göre önce dizinlere ayrılır.</p>
602 <p><code class="directive"><a href="./mod/mod_disk_cache.html#cachedirlevels">CacheDirLevels</a></code>
603 yönergesi kaç alt seviye dizin olacağını belirler. Örneğin, yukarıdaki
604 özete sahip bir dosyanın isminin başına yukarıdaki yapılandırma
605 örneğine uygun olarak
606 <code>/var/cache/apache/x/y/TGxSMO2b68mBCykqkp1w</code> gibi bir önek
609 <p>Bu tekniğin asıl amacı belli bir dizin içinde bulunabilecek
610 dosyaların ve alt dizinlerin sayısını düşük tutmaktır. Bu sayının
611 büyük olması çoğu işletim sisteminde başarımın düşmesine sebep olur.
612 <code class="directive"><a href="./mod/mod_disk_cache.html#cachedirlength">CacheDirLength</a></code>
613 yönergesi "1" değeriyle kullanıldığında her dizin altında en fazla 64
614 alt dizin veya dosya açılabilir. "2" değeriyle kullanıldığında ise bu
615 sayı 64^2’ye yükselir ve böyle artarak gider. İyi bir sebebiniz
616 olmadıkça <code class="directive"><a href="./mod/mod_disk_cache.html#cachedirlength">CacheDirLength</a></code> için değer olarak
617 "1" belirtmenizi öneririz.</p>
619 <p><code class="directive"><a href="./mod/mod_disk_cache.html#cachedirlevels">CacheDirLevels</a></code>
620 yönergesine atanacak değer önbellekte saklamayı düşündüğünüz olası
621 dosya sayısı ile ilgilidir. Yukarıdaki örnekte olduğu gibi "2"
622 değerini belirtirseniz, toplamda en fazla 4096 dizin oluşturulabilir.
623 1 milyon dosyanın önbelleklendiği bir durumda bu, her dizinde yaklaşık
624 olarak 245 önbelleklenmiş URL demektir.</p>
626 <p>Her URL için önbellekte en az iki dosya saklanır. Biri genellikle URL
627 hakkındaki temel verilerden oluşan ".header" dosyasıdır, diğeri ise
628 sunulacak içeriğin bire bir kopyası olan ".data" dosyasıdır.</p>
630 <p>"Vary" başlığı üzerinden içeriğin uzlaşıldığı durumda URL için bir
631 ".vary" dizini oluşturulur. Bu dizin her biri farklı bir uzlaşıma ait
632 çok sayıda ".data" dosyası içerebilir.</p>
635 <h3>Disk Önbelleğinin Bakımı</h3>
638 <p><code class="module"><a href="./mod/mod_disk_cache.html">mod_disk_cache</a></code> zaman aşımına uğrayan önbellekli
639 içeriği silse de önbelleğin toplam boyu ve ne kadar boş bellek kaldığı
640 hakkında bilgi vermez.</p>
642 <p>Bunun yerine Apache önbellek içeriğini düzenli aralıklarla
643 temizleyebilmeniz için <code class="program"><a href="./programs/htcacheclean.html">htcacheclean</a></code> adında bir araç
644 içerir. Önbellek için azami ne kadar yer kullanılacağının ve bunun
645 üzerinde <code class="program"><a href="./programs/htcacheclean.html">htcacheclean</a></code>’i hangi sıklıkta
646 çalıştırılacağının tespiti biraz karmaşık bir işlem olup uygun değerler
647 genellikle deneme yanılma yoluyla bulunur.</p>
649 <p><code class="program"><a href="./programs/htcacheclean.html">htcacheclean</a></code> iki işlem kipine sahiptir. Kalıcı bir
650 artalan süreci olarak çalışabileceği gibi cron üzerinden belli
651 aralıklarla da çalıştırılabilir. Çok büyük (onlarca GB) önbelleklerde
652 <code class="program"><a href="./programs/htcacheclean.html">htcacheclean</a></code>’in işini bitirmesi 1 saatten fazla
653 sürebileceğinden, cron ile çalıştırma durumunda aynı anda birden fazla
654 kopyanın çalışıyor durumda olmaması için
655 <code class="program"><a href="./programs/htcacheclean.html">htcacheclean</a></code>’in çalıştırılma aralığını iyi
656 belirlemek gerekir.</p>
659 <img src="images/caching_fig1.tr.png" alt="" width="600" height="406" /><br />
660 <a id="figure1" name="figure1"><dfn>Şekil 1</dfn></a>:
661 Önbelleğin büyümesi ve düzenli aralıklarla temizlenmesi.</p>
663 <p><code class="module"><a href="./mod/mod_disk_cache.html">mod_disk_cache</a></code> ne kadar önbellek alanı kullandığı
664 ile ilgili bir bilgi vermediğinden <code class="program"><a href="./programs/htcacheclean.html">htcacheclean</a></code>’in
665 bir temizlik sonrası yeterince büyük bir genişleme alanı kalacak
666 şekilde yapılandırılması önemlidir.</p>
670 <div class="bottomlang">
671 <p><span>Mevcut Diller: </span><a href="./en/caching.html" hreflang="en" rel="alternate" title="English"> en </a> |
672 <a href="./fr/caching.html" hreflang="fr" rel="alternate" title="Français"> fr </a> |
673 <a href="./tr/caching.html" title="Türkçe"> tr </a></p>
674 </div><div id="footer">
675 <p class="apache">Copyright 2008 The Apache Software Foundation.<br /><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> altında lisanslıdır.</p>
676 <p class="menu"><a href="./mod/">Modüller</a> | <a href="./mod/directives.html">Yönergeler</a> | <a href="./faq/">SSS</a> | <a href="./glossary.html">Terimler</a> | <a href="./sitemap.html">Site Haritası</a></p></div>