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