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>
26 <p>Bu belge <code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code>,
27 <code class="module"><a href="./mod/mod_disk_cache.html">mod_disk_cache</a></code>, <code class="module"><a href="./mod/mod_file_cache.html">mod_file_cache</a></code>
28 modülleri ve <a href="programs/htcacheclean.html">htcacheclean</a>
29 için bir başvuru kılavuzu niteliğindedir. HTTP sunucusu ve vekil
30 olarak çalışmada işlemleri hızlandırmak için bilinen sorunlar ve
31 yanlış yapılandırmalardan kaçınarak Apache’nin önbellekleme
32 özelliklerinin nasıl kullanılacağı açıklanmıştır.</p>
34 <div id="quickview"><ul id="toc"><li><img alt="" src="./images/down.gif" /> <a href="#introduction">Giriş</a></li>
35 <li><img alt="" src="./images/down.gif" /> <a href="#overview">Önbelleklemeye Bir Bakış</a></li>
36 <li><img alt="" src="./images/down.gif" /> <a href="#security">Güvenlik Kaygıları</a></li>
37 <li><img alt="" src="./images/down.gif" /> <a href="#filehandle">Dosya Tanıtıcı Önbelleklemesi</a></li>
38 <li><img alt="" src="./images/down.gif" /> <a href="#inmemory">Sistem Belleğinde Önbellekleme</a></li>
39 <li><img alt="" src="./images/down.gif" /> <a href="#disk">Disk Üzerinde Önbellekleme</a></li>
41 <div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
43 <h2><a name="introduction" id="introduction">Giriş</a></h2>
46 <p>Apache HTTP sunucusunun 2.2 sürümünden itibaren
47 <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
48 deneysel olmaktan çıkarılmış ve üretim amaçlı kullanılabileceğine karar
49 verilmiştir. Bu önbellekleme mimarileri gerek HTTP sunucusu gerekse
50 vekili olarak çalışmada HTTP işlemlerini hızlandırmak anlamında sunucuya
53 <p><code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code>, ortam sağlayıcı modülü olan
54 <code class="module"><a href="./mod/mod_disk_cache.html">mod_disk_cache</a></code> ile birlikte HTTP önbelleklemesini
55 akıllıca yerine getirir. İçeriğin kendisi önbellekte saklanırken
56 <code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code> içeriğin önbelleklenebilmesini denetim
57 altında tutan HTTP başlıkları ve seçenekleri ile ilgilenir. Yerel ve
58 vekalet edilen içeriğin her ikisinin de aynı anda işlem görmesi
59 sağlanabilir. <code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code>, vekalet edilen içeriğe,
60 devingen yerel içeriğe veya zamanla değişen yerel dosyalara erişimi
61 hızlandırma ihtiyacına yönelik olarak hem basit hem de karmaşık
62 önbellekleme yapılandırmalarını mümkün kılar.</p>
64 <p><code class="module"><a href="./mod/mod_file_cache.html">mod_file_cache</a></code> ise biraz daha temel ancak bazen daha
65 kullanışlı olabilen bir önbellekleme şekli ile ilgilenir. URL’lerin
66 önbelleklenebilmesini mümkün kılmanın karmaşıklığıyla boğuşmak yerine
67 <code class="module"><a href="./mod/mod_file_cache.html">mod_file_cache</a></code>, dosyaların Apache’nin son başlatıldığı
68 zamanki durumlarını saklamak için dosyaların belleğe eşlenmek üzere ele
69 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
70 değişmeyen durağan yerel dosyalara erişim zamanını azaltmaya yardım
73 <p><code class="directive"><a href="./mod/mod_file_cache.html#cachefile">CacheFile</a></code> ve
74 <code class="directive"><a href="./mod/mod_file_cache.html#mmapfile">MMapFile</a></code> yönergeleri ile
75 ilgili bölümlerde anlatılanları saymazsak
76 <code class="module"><a href="./mod/mod_file_cache.html">mod_file_cache</a></code>, bu belgenin asıl konusu olan
77 <code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code> önbellekleme mimarisine göre daha basit bir
78 önbellekleme gerçeklenimidir.</p>
80 <p>Bu belgeden azami yararı sağlayabilmek için temel bir HTTP bilginizin
81 olması ve <a href="urlmapping.html">URL’lerin Dosya Sistemine
82 Eşlenmesi</a> ile <a href="content-negotiation.html">İçerik Uzlaşımı</a>
83 belgelerini okumuş olmanız gerekir.</p>
85 </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
87 <h2><a name="overview" id="overview">Önbelleklemeye Bir Bakış</a></h2>
91 <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_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#cachefile">CacheFile</a></code></li><li><code class="directive"><a href="./mod/mod_file_cache.html#mmapfile">MMapFile</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>
93 <p>Bir istek sonuçlanıncaya kadar <code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code> modülünde iki
94 aşamadan geçer. İlkinde <code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code> bir URL eşleme modülü
95 olarak çalışır ve URL önbellekteyse ve zaman aşımına uğramamışsa isteğin
96 doğrudan <code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code> tarafından sunulmasını sağlar.</p>
98 <p>Yani isteğin sunumu sırasında, isteğin örneğin,
99 <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
100 ele alınması gerekse bile bu yapılmaz. Önbelleklenen içerik ilk alındığı
103 <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ı
104 saptamışsa içeriğin süzgeç tarafından sunulmasını sağladıktan sonra,
105 süzgeç içeriğin önbelleklenebileceğini saptamışsa gelecekte sunmak üzere
106 içeriği önbelleğe kaydeder.</p>
108 <p>Eğer URL önbellekte bulunmuş fakat içeriğin zaman aşımına uğradığı
109 anlaşılmışsa süzgeç yine de eklenir fakat bu kez
110 <code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code> önbellekteki sürümün hala geçerli olup
111 olmadığını saptamak için kaynağın bulunduğu sunucuya bir koşullu istek
112 gönderir. Önbellekteki sürüm hala geçerliyse temel verileri güncellenir
113 ve istek önbellekten sunulur. Önbellekteki sürüm artık geçerli değilse,
114 önbellekteki sürüm silinir ve süzgeç güncel içeriği önbelleğe kaydeder
115 ve isteği oradan sunar.</p>
117 <h3>Önbelleğin Hızlandırılması</h3>
120 <p>Yerel içerik önbelleklendiği takdirde <code class="directive"><a href="./mod/core.html#usecanonicalname">UseCanonicalName</a></code> yönergesine <code>On</code>
121 değeri atanmışsa önbellekten sunulan sayfa sayısında büyük bir artış
122 olduduğu görülür. Bunun sebebi içeriği sunan sanal konağın isminin
123 önbellek anahtarının bir parçası olarak kullanılmasıdır. Yönergeye
124 <code>On</code> değerini atamak suretiyle çok isimli ve rumuzlu sanal
125 konaklar için farklı önbellek girdileri oluşturulmaz, bunun yerine her
126 meşru sanal konak için ayrı bir önbellek tutulur.</p>
128 <p>Önbellekleme, URL’nin dosya ismine dönüştürülmesi aşamasında
129 gerçekleştiğinden önbelleklenen belgeler sadece URL isteklerine bir
130 yanıt olarak sunulurlar. <a href="howto/ssi.html">Sunucu Taraflı
131 İçerikleri</a> kullanmazsanız genellikle bunun fazla bir önemi
134 <div class="example"><p><code>
135 <!-- Bu içerik önbelleklenebilir. --><br />
136 <!--#include virtual="/dipnot.html" --><br />
138 <!-- Bu içerik önbelleklenemez. --><br />
139 <!--#include file="/bir/yol/dipnot.html" -->
142 <p>Sunucu Taraflı İçerikleri kullanıyorsanız ve önbelleklemenin
143 sağladığı hız artışından da yaralanmak istiyorsanız içerik
144 yerleştirmek için <code>virtual</code> içerik türünü kullanınız.</p>
147 <h3>Zaman Aşımı Süreleri</h3>
150 <p>Önbellekli öğeler için öntanımlı zaman aşımı süresi bir saat olmakla
151 birlikte <code class="directive"><a href="./mod/mod_cache.html#cachedefaultexpire">CacheDefaultExpire</a></code>
152 yönergesi kullanılarak bu değer kolaylıkla geçersiz kılınabilir. Bu
153 öntanımlı değer sadece içeriğin özgün kaynağı bir zaman aşımı süresi
154 veya son değişiklik tarihi belirtmediği takdirde kullanılır.</p>
156 <p>Bir yanıt <code>Expires</code> başlığını değil de
157 <code>Last-Modified</code> başlığını içeriyorsa
158 <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
159 nasıl kullanıldığına bakarak saptar.</p>
161 <p>Yerel içerik için, zaman aşımı süresini hassas olarak ayarlamak
162 gerekirse <code class="module"><a href="./mod/mod_expires.html">mod_expires</a></code> kullanılabilir.</p>
164 <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
169 <h3>Şartlı İstekler için Özlü Kılavuz</h3>
172 <p>Önbellekteki içerik zaman aşımına uğrayıp, içerik sağlayıcıya veya
173 arka sunucuya özgün isteği aktarmak yerine ayrı bir istek yapılması
174 gereği Apache’nin şartlı bir istek yapması sonucunu doğurur.</p>
176 <p>Bir istemcinin veya önbelleğin aynı içeriğin farklı sürümleri
177 arasında ayrım yapabilmesi için HTTP protokolü bazı başlık alanları
178 önerir. Örneğin, "Etag:" başlığıyla sunulan bir özkaynak için
179 "If-None-Match:" başlığıyla bir şartlı istek yapmak mümkün olduğu gibi
180 özkaynak "Last-Modified:" başlığıyla sunuluyorsa şartlı istek
181 "If-Modified-Since:" başlığıyla yapılabilir, vesaire.</p>
183 <p>Böyle bir şartlı istek yapıldığında yanıt koşulun içerikle eşleşip
184 eşleşmediğine bağlı olarak farklı olur. Eğer istek bir
185 "If-Modified-Since:" başlığıyla yapılmışsa ve içerik istekte
186 belirtilen zamandan önce değiştirilmemişse kısa ve öz olarak bir "304
187 Not Modified" (Bir değişiklik yok) iletisiyle yanıt verilir.</p>
189 <p>Aksi takdirde bir şartlı istek yapılmamış gibi içeriğin kendisi
192 <p>Önbellekleme ile ilgili şartlı istekler çifte yarar sağlar. Birinci
193 olarak, böyle bir istek arkadaki sunucuya yapılıyorsa ve iki içerik de
194 aynıysa bunu saptamak kolay olur ve özkaynağın tamamını aktarma
195 külfetinden kurtulunur.</p>
197 <p>İkinci olarak, şartlı istekler arka sunucuda normalden daha az
198 faaliyete sebep olur. Durağan dosyalar için bu genellikle
199 <code>stat()</code> veya benzeri bir sistem çağrısıyla dosya
200 boyutları ve değişiklik zamanına bakmak şeklinde gerçekleşir.
201 Böylelikle Apache yerel içeriği önbellekliyor olsa bile ve hatta
202 içerik zaman aşımına da uğrasa önbellekteki dosyada bir değişiklik
203 olmadığı takdirde içeriği önbellekten sunmak daha hızlı olacaktır.
204 Çünkü dosyayı önbellekten okumak, arka sunucudan okumaktan daha
205 hızlıdır (bu, bellekten okumayla diskten okumayı karşılaştırmak
209 <h3>Neler Önbelleklenebilir?</h3>
212 <p>Evvelce bahsedildiği gibi Apache’de iki tür önbellekleme yapılır ve
213 bunlar farklı yöntemlerle çalışır. <code class="module"><a href="./mod/mod_file_cache.html">mod_file_cache</a></code>
214 önbelleklemesinde dosyalar Apache başlatıldığı zamanki içerikle
215 saklanır. Bu modül tarafından önbelleğe alınmış bir dosya için istek
216 geldiğinde isteğin yolu kesilip önbellekteki dosya sunulur.</p>
218 <p><code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code> önbelleklemesinde işler biraz daha
219 karışıktır. Bir isteğe hizmet sunulurken istenen içerik evvelce
220 önbelleklenmemişse önbellekleme modülü önce içeriğin
221 önbelleklenebilirliğine bakar. Bir yanıtın önbelleklenebilirliğini
222 belirleyen koşullar şunlardır:</p>
225 <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>
227 <li>Yanıtın HTTP durum kodu 200, 203, 300, 301 veya 410 olmalıdır.</li>
229 <li>İstek bir HTTP GET isteği olmalıdır.</li>
231 <li>İstek bir "Authorization:" başlığı içeriyorsa yanıt önbelleğe
234 <li>Eğer yanıt bir "Authorization:" başlığı içeriyorsa ayrıca
235 "Cache-Control:" başlığında da "s-maxage", "must-revalidate" veya
236 "public" değerlerinden birini içermelidir.</li>
238 <li>Eğer URL (GET yöntemi kullanan bir HTML formunun yaptığı gibi) bir
239 sorgu dizgesi içeriyorsa yanıt, RFC2616’nın 13.9. bölümünde
240 açıklandığı gibi bir "Expires:" başlığı içermedikçe yanıt içeriği
241 önbelleğe alınmayacaktır.</li>
243 <li><code class="directive"><a href="./mod/mod_cache.html#cacheignorenolastmod">CacheIgnoreNoLastMod</a></code>
244 yönergesinin kullanımını gerektiren bir durum olmadıkça 200 durum
245 koduna sahip bir yanıtın "Etag", "Last-Modified" ve "Expires"
246 başlıklarından en az birini içermesi gerekir.</li>
248 <li><code class="directive"><a href="./mod/mod_cache.html#cachestoreprivate">CacheStorePrivate</a></code>
249 yönergesinin kullanımını gerektiren bir durum olmadıkça yanıt
250 "private" değerli bir "Cache-Control:" başlığı içerdiği takdirde
251 yanıtın içeriği önbelleğe alınmayacaktır.</li>
253 <li>Benzer şekilde, <code class="directive"><a href="./mod/mod_cache.html#cachestorenostore">CacheStoreNoStore</a></code> yönergesi kullanılmamışsa yanıt
254 "no-store" değerli bir "Cache-Control:" başlığı içeriyorsa yanıt
255 içeriği önbelleğe alınmayacaktır.</li>
257 <li>Herşeyle eşleşen "*" değerli bir "Vary:" başlığı içeren bir
258 yanıtın içeriği önbelleğe alınmaz.</li>
262 <h3>Neler Önbelleklenmemeli?</h3>
265 <p>Kısaca, istek zamana aşırı bağımlıysa ya da istek kısmen bile olsa
266 HTTP uzlaşımıyla bağdaşmıyorsa önbelleğe alınmamalıdır.</p>
268 <p>İçeriği istekçinin IP adresine bağlı olarak değişen veya her beş
269 dakikada bir değişikliğe uğrayan bir devingen içeriğe sahipseniz böyle
270 bir içerik asla önbelleğe alınmamalıdır.</p>
272 <p>Diğer taraftan, içerik HTTP başlığındaki değerlere bağlı olarak
273 değişiyorsa içeriğin bir "Vary" başlığı kullanılarak akıllıca
274 önbelleklenmesi imkanı mevcuttur.</p>
277 <h3>Değişken/Uzlaşımlı İçerik</h3>
280 <p>"Vary" başlıklı bir yanıt arka sunucudan istenirken
281 <code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code> tarafından alınmışsa akıllıca ele alınmaya
282 çalışılacaktır. Mümkünse, <code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code> gelecekte bu
283 içerikle ilgili isteklerin "Vary" başlıklı yanıtları olacağını
284 saptayacak ve önbellekten doğru içerikle yanıt verecektir.</p>
286 <p>Örneğin, bir yanıt şöyle bir başlık ile alınmışsa,</p>
288 <div class="example"><p><code>
289 Vary: negotiate,accept-language,accept-charset
292 <p><code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code> sadece accept-language ve accept-charset
293 başlıkları özgün istekle eşleşen önbellekli içeriği sunacaktır.</p>
296 </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
297 <div class="section">
298 <h2><a name="security" id="security">Güvenlik Kaygıları</a></h2>
301 <h3>Erişim Denetimi ve Yetkilendirme</h3>
304 <p><code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code> çoğunlukla bir karşı vekile sahip olmak
305 amacıyla kullanılır. Arka sunucunun sorgulanmasını gerektirmeyen tüm
306 istekler önbellekleme modülü tarafından karşılanacaktır. Yerel
307 özkaynakların önbelleklenmesi söz konusu olduğunda Apache’nin güvenlik
308 modeli büyükçe bir değişikliğe uğrar.</p>
310 <p>Olası <code>.htaccess</code> dosyalarının dosya sisteminin tamamında
311 taranması çok pahalı bir işlem olduğundan <code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code>,
312 (işlemi hızlandırmak için) önbelleğe almanın temel amacını kısmen
313 gözardı ederek, önbellekteki içeriğin sunumu için gerekli
314 yetkilendirmenin olup olmadığı konusunda bir karar üretmez. Başka bir
315 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
316 almışsa içerik zaman aşımına uğramadığı sürece bu içerik önbellekten
319 <p>Örneğin, yapılandırmanız bir özkaynağa IP adresine göre erişime izin
320 veriyorsa bu içeriğin önbelleğe alınmayacağından emin olmalısınız.
321 Bunu <code class="directive"><a href="./mod/mod_cache.html#cachedisable">CacheDisable</a></code>
322 yönergesini veya <code class="module"><a href="./mod/mod_expires.html">mod_expires</a></code> kullanarak
323 yapabilirsiniz. Bunu yapmaz, olayı kendi haline bırakırsanız
324 <code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code> bir karşı vekil gibi çalışarak sunulan her
325 içeriği arabelleğe alacak ve hangi IP adresinden gelirse gelsin her
326 istemciye bunu sunacaktır.</p>
329 <h3>Yerel İstismarcılar</h3>
332 <p>Son kullanıcılarıın isteklerine önbellekten hizmet sunulduğundan
333 önbelleğin kendisi içerikle etkileşime geçmek isteyenlerin veya
334 içeriği tahrif etmek isteyenlerin hedefi haline gelebilir. Apache’yi
335 çalıştıran kullanıcı tarafından her zaman önbelleğe yazılabileceğini
336 akıldan çıkarmamak önemlidir. Bu durumda alışılmışın tersine tüm
337 içeriğin Apache kullanıcısı tarafından yazılamamasının sağlanması
340 <p>Eğer Apache kullanıcısı, örneğin bir CGI sürecindeki açık nedeniyle
341 tehlikeye atılırsa, önbellek hedef alınabilir.
342 <code class="module"><a href="./mod/mod_disk_cache.html">mod_disk_cache</a></code> kullanılırken önbellekteki bir öğeyi
343 değiştirmek veya önbelleğe yeni bir öğe eklemek görece daha
346 <p>Bu risk, Apache kullanıcısını kullanan diğer saldırı türleriyle
347 karşılaştırıldığında daha yüksektir. <code class="module"><a href="./mod/mod_disk_cache.html">mod_disk_cache</a></code>
348 kullanıyorsanız şunları aklınızdan çıkarmayın: (1) Apache güvenlik
349 güncellemelerini takip edin ve sunucunuzu buna göre güncelleyin. (2)
350 Mümkünse <a href="suexec.html">suEXEC</a> kullanarak CGI süreçlerini
351 Apache kullanıcısı olmayan bir kullanıcının aidiyetinde çalıştırın.</p>
355 <h3>Önbellek Zehirlenmeleri</h3>
358 <p>Apache bir önbellekli vekil sunucu olarak çalıştığında önbellek
359 zehirlenmesi adı verilen sorunla karşılaşılma olasılığı vardır.
360 Önbellek zehirlenmesi, vekil sunucunun arka sunucudan yanlış (ve
361 genellikle istenmeyen) içerik almasına sebep olan bir saldırı türünü
362 betimlemek için yaygın olarak kullanılan bir terimdir.</p>
364 <p>Örneğin Apache’nin çalıştığı sistemin kullandığı DNS sunucuları DNS
365 önbellek zehirlenmesinden etkilenebilecek durumdaysa, bir saldırgan
366 Apache’nin istekleri almak için başvuracağı kaynak sunucunun yerini
367 değiştirebilir. Diğer bir örnek, HTTP istek kaçakçılığı adı verilen
368 bir saldırı türüdür.</p>
370 <p>Bu belge HTTP istek kaçakçılığını derinliğine incelenmesi için uygun
371 yer değildir (böyle kaynaklara arama motorunuzla erişebilirsiniz).
372 Bununla birlikte, vekil tarafından kaynak sunucudan alınan içeriği
373 tamamen denetim altına almak amacıyla kaynak sunucudaki bir açığı
374 istismar etmeye yönelik bir dizi istek yapılabileceğinin olasılık
375 dahilinde olduğunu bilmenizde yarar vardır.</p>
377 </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
378 <div class="section">
379 <h2><a name="filehandle" id="filehandle">Dosya Tanıtıcı Önbelleklemesi</a></h2>
382 <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></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>
384 <p>Bir dosyanın açılması işlemi, özellikle de ağ dosya sistemlerinde
385 bulunan dosyalar için önemli bir gecikme kaynağı olabilir. Önbellekte,
386 çok sunulan dosyaların kendilerinin değil, açık dosya tanıtıcılarının
387 saklanması Apache’yi bu tür gecikmelerden koruyabilir. Apache’de tek türde
388 dosya tanıtıcı önbelleklemesi yapılabilmektedir.</p>
390 <h3><code>CacheFile</code> yönergesi ile</h3>
393 <p>Apache’de mevcut önbelleklemenin en temel şekli
394 <code class="module"><a href="./mod/mod_file_cache.html">mod_file_cache</a></code> tarafından sağlanan dosya tanıtıcı
395 önbelleklemesidir. Bu önbellek türü dosyaların kendilerini değil açık
396 dosya tanıtıcılarının bir listesini saklar. Dosyaların bu anlamda
397 önbelleklenmesi, <code class="directive"><a href="./mod/mod_file_cache.html#cachefile">CacheFile</a></code> yönergesi yapılandırma dosyasında belirtilerek
400 <p><code class="directive"><a href="./mod/mod_file_cache.html#cachefile">CacheFile</a></code> yönergesi
401 belirtilen dosyanın Apache başlatıldığında açılmasını ve dosya için
402 yapılan sonraki her istekte bu dosya tanıtıcısının kullanılmasını
405 <div class="example"><p><code>
406 CacheFile /usr/local/apache2/htdocs/index.html
409 <p>Büyük miktarda dosyayı bu anlamda önbelleklemeyi tasarlıyorsanız
410 işletim sisteminizin açık dosya tanıtıcılarının sayısı ile ilgili
411 sınırlamasını uygun bir değere ayarlamanız gerekebilir.</p>
413 <p><code class="directive"><a href="./mod/mod_file_cache.html#cachefile">CacheFile</a></code> yönergesini
414 kullandığınız takdirde dosya içeriğindeki değişiklikleri anında isteğe
415 yansıtamazsınız. Apache dosyayı ilk başlatıldığındaki haliyle
418 <p>Eğer Apache çalışırken dosya silinmişse Apache ilk başlatıldığındaki
419 haline ilişkin dosya tanıtıcıyı sağlamaya ve dolayısıyla dosya
420 içeriğini sunmaya devam edecektir. Yani, dosya silinmiş ve artık dosya
421 sisteminde görünmüyor olsa bile Apache durdurulup dosya tanıtıcıları
422 kapanmadıkça dosyaların silinmesiyle açılan yer serbest
425 </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
426 <div class="section">
427 <h2><a name="inmemory" id="inmemory">Sistem Belleğinde Önbellekleme</a></h2>
430 <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></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#mmapfile">MMapFile</a></code></li></ul></td></tr></table>
432 <p>İçeriğin sistem belleğinden sunulması içerik sunmanın evrensel olarak
433 en hızlı yoludur. Dosyaların bir disk denetleyiciden okunması ya da daha
434 kötüsü uzak bir ağdan okunması bellekten okumayla karşılaştırılamayacak
435 ölçüde yavaş işlemlerdir. Disk denetleyiciler genellikle fiziksel
436 süreçleri denetlerler. Ağ erişimi ise band genişliği sınırlamalarından
437 etkilenir. Halbuki bellek erişimi sadece nano saniyeler mertebesinde
440 <p>Sistem belleği en pahalı saklama ortamı olması sebebiyle en verimli
441 şekilde kullanımı önemlidir. Dosyaları sistem belleğinde saklamakla
442 sistemin kullanabileceği bellek miktarını azaltmış olursunuz. İşletim
443 sistemi önbelleklemesinde göreceğiniz gibi bu öyle basit bir konu
444 değildir. Apache’nin kendi kullandığı belleğin bir kısmını önbellek
445 olarak ayırırken çok fazla bellek kullanmamak önemlidir. Aksi takdirde
446 işletim sistemi belleğin yetmediği noktada belleği diske
447 takaslayacağından istenen başarım artışı sağlanamayacaktır.</p>
449 <h3>İşletim Sistemi Önbelleklemesi</h3>
452 <p>Günümüz iştetim sistemlerinin hemen hemen tamamında bellek içi
453 dosya/veri saklama işlemlerini çekirdek yönetir. Bu güçlü bir
454 özelliktir ve işletim sistemlerinin büyük çoğunluğu bunu böyle yapar.
455 Örneğin, Linux’ta bir dosyanın ilk defa okunduğunda ve ikinci kez
456 okunduğunda işlemcinin ne kadar meşgul edildiğine bakalım:</p>
458 <div class="example"><p><code>
459 colm@coroebus:~$ time cat testfile > /dev/null<br />
463 colm@coroebus:~$ time cat testfile > /dev/null<br />
469 <p>Küçük bir dosya için bile okuma süresi bakımından büyük fark ortaya
470 çıkmaktadır. Bunun sebebi çekirdeğin dosya içeriğini bellek daha
471 güncel amaçlar için lazım olana dek bellek içinde saklamasıdır.</p>
473 <p>Sisteminizde yeterince yedek bellek olduğundan eminseniz, bu
474 önbellekte daha fazla dosya saklanacağından emin olabilirsiniz.
475 Bundan, önbelleğin sistem belleğinde verimli biçimde tutulması için
476 Apache’de ek bir yapılandırmaya gidilmesinin gerekmediği sonucu
479 <p>Bundan başka, işletim sistemi dosyaların değiştiği ve silindiği
480 zamanları bildiğinden bu tür dosyaların içerikleri gerektiğinde
481 önbellekten kendiliğinden silinmiş olur. Bellek içinde dosya saklarken
482 dosyaların değiştirilme zamanlarını bilme olanağı olmadığından bu
483 durum Apache’ye büyük yarar sağlar.</p>
486 <p>İşletim sisteminin dosyaların önbelleklenmesi için sağladığı bunca
487 yarara ve başarım artışına karşın bellek içinde dosya önbelleklemenin
488 Apache tarafından yerine getirilmesinin daha iyi olacağı bazı durumlar
491 <h3><code>MMapFile</code> yönergesi ile</h3>
494 <p><code class="module"><a href="./mod/mod_file_cache.html">mod_file_cache</a></code> modülü, bir durağan dosyanın
495 içeriğini sunucunun başlatılması sırasında (mmap sistem çağrısıyla)
496 belleğe eşlenmesini mümkün kılmak için <code class="directive"><a href="./mod/mod_file_cache.html#mmapfile">MMapFile</a></code> yönergesini sağlar.
497 Apache bu dosyaya gelecek sonraki istekler için dosyanın bellekiçi
498 içeriğini kullanacaktır.</p>
500 <div class="example"><p><code>
501 MMapFile /usr/local/apache2/htdocs/index.html
504 <p><code class="directive"><a href="./mod/mod_file_cache.html#cachefile">CacheFile</a></code> yönergesinde
505 olduğu gibi bu dosyalarda Apache başlatıldıktan sonra yapılacak bir
506 değişiklikten Apache’nin haberi olmayacaktır.</p>
508 <p><code class="directive"><a href="./mod/mod_file_cache.html#mmapfile">MMapFile</a></code> yönergesi
509 ayırdığı belleğin toplam miktarı ile ilgilenmez, dolayısıyla
510 yönergenin aşırı kullanımından kaçınmalısınız. Apache’nin çocuk
511 süreçlerinin her biri bu belleğin kendilerine ait birer kopyasını
512 yapacağından belleğe eşlenen dosyaların çok yer kaplamaması büyük önem
513 taşımaktadır; aksi takdirde işletim sistemi belleği diske
514 takaslayacağından beklenen fayda sağlanamayacaktır.</p>
516 </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
517 <div class="section">
518 <h2><a name="disk" id="disk">Disk Üzerinde Önbellekleme</a></h2>
521 <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>
523 <p><code class="module"><a href="./mod/mod_disk_cache.html">mod_disk_cache</a></code> modülü önbelleklemenin
524 <code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code> için disk üzerinde yapılmasını mümkün
525 kılar. Bbu önbellekleme akıllıca yapılır ve önbellekteki içerik
526 sadece geçerli kabul edildiği sürece sunulabilir.</p>
528 <p>Modül bu amaçla genelde şöyle kullanılır:</p>
530 <div class="example"><p><code>
531 CacheRoot /var/cache/apache/<br />
532 CacheEnable disk /<br />
533 CacheDirLevels 2<br />
537 <p>En önemlisi önbelleklenen dosyaların yerel olarak saklanması olup
538 işletim sisteminin sağladığı bellekiçi önbelleklemeden de ayrıca
539 faydalanılmış olur. Bu bakımdan, dosyalar disk üzerinde saklansa bile
540 sıkça erişilen dosyalar işletim sistemi sayesinde aslında bellekten
541 sunulmuş olacaklardır.</p>
543 <h3>Önbellekte Saklamanın Anlamı</h3>
546 <p><code class="module"><a href="./mod/mod_disk_cache.html">mod_disk_cache</a></code> öğeleri önbellekte saklamak için
547 istek yapılan URL’nin 22 karakterlik özetini oluşturur. Bu özet, çok
548 sayıda URL’nin aynı özeti oluşturmaması için konak ismi, protokol,
549 port ve varsa CGI argümanlarından oluşur.</p>
551 <p>Özeti oluşturan karakterler 64 karakterlik bir karakter kümesinden
552 seçildiğinden oluşturulması olası farklı özet sayısı 64^22’dir.
553 Örneğin, bir URL’nin <code>xyTGxSMO2b68mBCykqkp1w</code> gibi bir
554 özeti olabilir. Bu özet, bu URL ile erişilen dosyalar önbellek içinde
555 saklanırken dosya ismi öneki olarak kullanılır. Ancak bununla
556 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
557 değerlerine göre önce dizinlere ayrılır.</p>
559 <p><code class="directive"><a href="./mod/mod_disk_cache.html#cachedirlevels">CacheDirLevels</a></code>
560 yönergesi kaç alt seviye dizin olacağını belirler. Örneğin, yukarıdaki
561 özete sahip bir dosyanın isminin başına yukarıdaki yapılandırma
562 örneğine uygun olarak
563 <code>/var/cache/apache/x/y/TGxSMO2b68mBCykqkp1w</code> gibi bir önek
566 <p>Bu tekniğin asıl amacı belli bir dizin içinde bulunabilecek
567 dosyaların ve alt dizinlerin sayısını düşük tutmaktır. Bu sayının
568 büyük olması çoğu işletim sisteminde başarımın düşmesine sebep olur.
569 <code class="directive"><a href="./mod/mod_disk_cache.html#cachedirlength">CacheDirLength</a></code>
570 yönergesi "1" değeriyle kullanıldığında her dizin altında en fazla 64
571 alt dizin veya dosya açılabilir. "2" değeriyle kullanıldığında ise bu
572 sayı 64^2’ye yükselir ve böyle artarak gider. İyi bir sebebiniz
573 olmadıkça <code class="directive"><a href="./mod/mod_disk_cache.html#cachedirlength">CacheDirLength</a></code> için değer olarak
574 "1" belirtmenizi öneririz.</p>
576 <p><code class="directive"><a href="./mod/mod_disk_cache.html#cachedirlevels">CacheDirLevels</a></code>
577 yönergesine atanacak değer önbellekte saklamayı düşündüğünüz olası
578 dosya sayısı ile ilgilidir. Yukarıdaki örnekte olduğu gibi "2"
579 değerini belirtirseniz, toplamda en fazla 4096 dizin oluşturulabilir.
580 1 milyon dosyanın önbelleklendiği bir durumda bu, her dizinde yaklaşık
581 olarak 245 önbelleklenmiş URL demektir.</p>
583 <p>Her URL için önbellekte en az iki dosya saklanır. Biri genellikle URL
584 hakkındaki temel verilerden oluşan ".header" dosyasıdır, diğeri ise
585 sunulacak içeriğin bire bir kopyası olan ".data" dosyasıdır.</p>
587 <p>"Vary" başlığı üzerinden içeriğin uzlaşıldığı durumda URL için bir
588 ".vary" dizini oluşturulur. Bu dizin her biri farklı bir uzlaşıma ait
589 çok sayıda ".data" dosyası içerebilir.</p>
592 <h3>Disk Önbelleğinin Bakımı</h3>
595 <p><code class="module"><a href="./mod/mod_disk_cache.html">mod_disk_cache</a></code> zaman aşımına uğrayan önbellekli
596 içeriği silse de önbelleğin toplam boyu ve ne kadar boş bellek kaldığı
597 hakkında bilgi vermez.</p>
599 <p>Bunun yerine Apache önbellek içeriğini düzenli aralıklarla
600 temizleyebilmeniz için <code class="program"><a href="./programs/htcacheclean.html">htcacheclean</a></code> adında bir araç
601 içerir. Önbellek için azami ne kadar yer kullanılacağının ve bunun
602 üzerinde <code class="program"><a href="./programs/htcacheclean.html">htcacheclean</a></code>’i hangi sıklıkta
603 çalıştırılacağının tespiti biraz karmaşık bir işlem olup uygun değerler
604 genellikle deneme yanılma yoluyla bulunur.</p>
606 <p><code class="program"><a href="./programs/htcacheclean.html">htcacheclean</a></code> iki işlem kipine sahiptir. Kalıcı bir
607 artalan süreci olarak çalışabileceği gibi cron üzerinden belli
608 aralıklarla da çalıştırılabilir. Çok büyük (onlarca GB) önbelleklerde
609 <code class="program"><a href="./programs/htcacheclean.html">htcacheclean</a></code>’in işini bitirmesi 1 saatten fazla
610 sürebileceğinden, cron ile çalıştırma durumunda aynı anda birden fazla
611 kopyanın çalışıyor durumda olmaması için
612 <code class="program"><a href="./programs/htcacheclean.html">htcacheclean</a></code>’in çalıştırılma aralığını iyi
613 belirlemek gerekir.</p>
616 <img src="images/caching_fig1.tr.png" alt="" width="600" height="406" /><br />
617 <a id="figure1" name="figure1"><dfn>Şekil 1</dfn></a>:
618 Önbelleğin büyümesi ve düzenli aralıklarla temizlenmesi.</p>
620 <p><code class="module"><a href="./mod/mod_disk_cache.html">mod_disk_cache</a></code> ne kadar önbellek alanı kullandığı
621 ile ilgili bir bilgi vermediğinden <code class="program"><a href="./programs/htcacheclean.html">htcacheclean</a></code>’in
622 bir temizlik sonrası yeterince büyük bir genişleme alanı kalacak
623 şekilde yapılandırılması önemlidir.</p>
627 <div class="bottomlang">
628 <p><span>Mevcut Diller: </span><a href="./en/caching.html" hreflang="en" rel="alternate" title="English"> en </a> |
629 <a href="./fr/caching.html" hreflang="fr" rel="alternate" title="Français"> fr </a> |
630 <a href="./tr/caching.html" title="Türkçe"> tr </a></p>
631 </div><div id="footer">
632 <p class="apache">Copyright 2009 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>
633 <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>