]> granicus.if.org Git - apache/blob - docs/manual/caching.xml.tr
update for sync with English doc.
[apache] / docs / manual / caching.xml.tr
1 <?xml version="1.0" encoding="UTF-8" ?>
2 <!DOCTYPE manualpage SYSTEM "style/manualpage.dtd">
3 <?xml-stylesheet type="text/xsl" href="style/manual.tr.xsl"?>
4 <!-- English Revision: 743408 -->
5 <!-- =====================================================
6  Translated by: Nilgün Belma Bugüner <nilgun belgeler.org>
7    Reviewed by: Orhan Berent <berent belgeler.org>
8 ========================================================== -->
9
10 <!--
11  Licensed to the Apache Software Foundation (ASF) under one or more
12  contributor license agreements.  See the NOTICE file distributed with
13  this work for additional information regarding copyright ownership.
14  The ASF licenses this file to You under the Apache License, Version 2.0
15  (the "License"); you may not use this file except in compliance with
16  the License.  You may obtain a copy of the License at
17
18      http://www.apache.org/licenses/LICENSE-2.0
19
20  Unless required by applicable law or agreed to in writing, software
21  distributed under the License is distributed on an "AS IS" BASIS,
22  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
23  See the License for the specific language governing permissions and
24  limitations under the License.
25 -->
26
27 <manualpage metafile="caching.xml.meta">
28
29   <title>Önbellek Kullanım Kılavuzu</title>
30
31   <summary>
32     <p>Bu belge <module>mod_cache</module>,
33       <module>mod_disk_cache</module>, <module>mod_file_cache</module>
34       modülleri ve <a href="programs/htcacheclean.html">htcacheclean</a>
35       için bir başvuru kılavuzu niteliğindedir. HTTP sunucusu ve vekil
36       olarak çalışmada işlemleri hızlandırmak için bilinen sorunlar ve
37       yanlış yapılandırmalardan kaçınarak Apache’nin önbellekleme
38       özelliklerinin nasıl kullanılacağı açıklanmıştır.</p>
39   </summary>
40
41   <section id="introduction">
42     <title>Giriş</title>
43
44     <p>Apache HTTP sunucusunun 2.2 sürümünden itibaren
45       <module>mod_cache</module> ve <module>mod_file_cache</module> modülleri
46       deneysel olmaktan çıkarılmış ve üretim amaçlı kullanılabileceğine karar
47       verilmiştir. Bu önbellekleme mimarileri gerek HTTP sunucusu gerekse
48       vekili olarak çalışmada HTTP işlemlerini hızlandırmak anlamında sunucuya
49       güç katarlar.</p>
50
51     <p><module>mod_cache</module>, ortam sağlayıcı modülü olan
52       <module>mod_disk_cache</module> ile birlikte HTTP önbelleklemesini
53       akıllıca yerine getirir. İçeriğin kendisi önbellekte saklanırken
54       <module>mod_cache</module> içeriğin önbelleklenebilmesini denetim
55       altında tutan HTTP başlıkları ve seçenekleri ile ilgilenir. Yerel ve
56       vekalet edilen içeriğin her ikisinin de aynı anda işlem görmesi
57       sağlanabilir. <module>mod_cache</module>, vekalet edilen içeriğe,
58       devingen yerel içeriğe veya zamanla değişen yerel dosyalara erişimi
59       hızlandırma ihtiyacına yönelik olarak hem basit hem de karmaşık
60       önbellekleme yapılandırmalarını mümkün kılar.</p>
61
62     <p><module>mod_file_cache</module> ise biraz daha temel ancak bazen daha
63       kullanışlı olabilen bir önbellekleme şekli ile ilgilenir. URL’lerin
64       önbelleklenebilmesini mümkün kılmanın karmaşıklığıyla boğuşmak yerine
65       <module>mod_file_cache</module>, dosyaların Apache’nin son başlatıldığı
66       zamanki durumlarını saklamak için dosyaların belleğe eşlenmek üzere ele
67       alınmasını sağlar. Böylelikle, <module>mod_file_cache</module>, çok sık
68       değişmeyen durağan yerel dosyalara erişim zamanını azaltmaya yardım
69       eder.</p>
70
71     <p><directive module="mod_file_cache">CacheFile</directive> ve
72       <directive module="mod_file_cache">MMapFile</directive> yönergeleri ile
73       ilgili bölümlerde anlatılanları saymazsak
74       <module>mod_file_cache</module>, bu belgenin asıl konusu olan
75       <module>mod_cache</module> önbellekleme mimarisine göre daha basit bir
76       önbellekleme gerçeklenimidir.</p>
77
78     <p>Bu belgeden azami yararı sağlayabilmek için temel bir HTTP bilginizin
79       olması ve <a href="urlmapping.html">URL’lerin Dosya Sistemine
80       Eşlenmesi</a> ile <a href="content-negotiation.html">İçerik Uzlaşımı</a>
81       belgelerini okumuş olmanız gerekir.</p>
82
83   </section>
84
85   <section id="overview">
86
87     <title>Önbelleklemeye Bir Bakış</title>
88
89     <related>
90       <modulelist>
91         <module>mod_cache</module>
92         <module>mod_disk_cache</module>
93         <module>mod_file_cache</module>
94       </modulelist>
95       <directivelist>
96         <directive module="mod_cache">CacheEnable</directive>
97         <directive module="mod_cache">CacheDisable</directive>
98         <directive module="mod_file_cache">CacheFile</directive>
99         <directive module="mod_file_cache">MMapFile</directive>
100         <directive module="core">UseCanonicalName</directive>
101         <directive module="mod_negotiation">CacheNegotiatedDocs</directive>
102       </directivelist>
103     </related>
104
105     <p>Bir istek sonuçlanıncaya kadar <module>mod_cache</module> modülünde iki
106       aşamadan geçer. İlkinde <module>mod_cache</module> bir URL eşleme modülü
107       olarak çalışır ve URL önbellekteyse ve zaman aşımına uğramamışsa isteğin
108       doğrudan <module>mod_cache</module> tarafından sunulmasını sağlar.</p>
109
110     <p>Yani isteğin sunumu sırasında, isteğin örneğin,
111       <module>mod_proxy</module> veya <module>mod_rewrite</module> tarafından
112       ele alınması gerekse bile bu yapılmaz. Önbelleklenen içerik ilk alındığı
113       haliyle sunulur.</p>
114
115     <p>Eğer URL önbellekte yoksa, <module>mod_cache</module> isteği bir  <a
116       href="filter.html">süzgece</a> tabi tutar. Apache içeriğin varlığını
117       saptamışsa içeriğin süzgeç tarafından sunulmasını sağladıktan sonra,
118       süzgeç içeriğin önbelleklenebileceğini saptamışsa gelecekte sunmak üzere
119       içeriği önbelleğe kaydeder.</p>
120
121     <p>Eğer URL önbellekte bulunmuş fakat içeriğin zaman aşımına uğradığı
122       anlaşılmışsa süzgeç yine de eklenir fakat bu kez
123       <module>mod_cache</module> önbellekteki sürümün hala geçerli olup
124       olmadığını saptamak için kaynağın bulunduğu sunucuya bir koşullu istek
125       gönderir. Önbellekteki sürüm hala geçerliyse temel verileri güncellenir
126       ve istek önbellekten sunulur. Önbellekteki sürüm artık geçerli değilse,
127       önbellekteki sürüm silinir ve süzgeç güncel içeriği önbelleğe kaydeder
128       ve isteği oradan sunar.</p>
129
130     <section>
131       <title>Önbelleğin Hızlandırılması</title>
132
133       <p>Yerel içerik önbelleklendiği takdirde <directive
134         module="core">UseCanonicalName</directive> yönergesine <code>On</code>
135         değeri atanmışsa önbellekten sunulan sayfa sayısında büyük bir artış
136         olduduğu görülür. Bunun sebebi içeriği sunan sanal konağın isminin
137         önbellek anahtarının bir parçası olarak kullanılmasıdır. Yönergeye
138         <code>On</code> değerini atamak suretiyle çok isimli ve rumuzlu sanal
139         konaklar için farklı önbellek girdileri oluşturulmaz, bunun yerine her
140         meşru sanal konak için ayrı bir önbellek tutulur.</p>
141
142       <p>Önbellekleme, URL’nin dosya ismine dönüştürülmesi aşamasında
143         gerçekleştiğinden önbelleklenen belgeler sadece URL isteklerine bir
144         yanıt olarak sunulurlar. <a href="howto/ssi.html">Sunucu Taraflı
145         İçerikleri</a> kullanmazsanız genellikle bunun fazla bir önemi
146         olmaz.</p>
147
148       <example>
149         &lt;!-- Bu içerik önbelleklenebilir. --&gt;<br />
150         &lt;!--#include virtual="/dipnot.html" --&gt;<br />
151         <br />
152         &lt;!-- Bu içerik önbelleklenemez. --&gt;<br />
153         &lt;!--#include file="/bir/yol/dipnot.html" --&gt;
154       </example>
155
156       <p>Sunucu Taraflı İçerikleri kullanıyorsanız ve önbelleklemenin
157         sağladığı hız artışından da yaralanmak istiyorsanız içerik
158         yerleştirmek için <code>virtual</code> içerik türünü kullanınız.</p>
159     </section>
160
161     <section>
162       <title>Zaman Aşımı Süreleri</title>
163
164       <p>Önbellekli öğeler için öntanımlı zaman aşımı süresi bir saat olmakla
165         birlikte <directive module="mod_cache">CacheDefaultExpire</directive>
166         yönergesi kullanılarak bu değer kolaylıkla geçersiz kılınabilir. Bu
167         öntanımlı değer sadece içeriğin özgün kaynağı bir zaman aşımı süresi
168         veya son değişiklik tarihi belirtmediği takdirde kullanılır.</p>
169
170       <p>Bir yanıt <code>Expires</code> başlığını değil de
171         <code>Last-Modified</code> başlığını içeriyorsa
172         <module>mod_cache</module> zaman aşımı süresini <directive
173         module="mod_cache">CacheLastModifiedFactor</directive> yönergesinin
174         nasıl kullanıldığına bakarak saptar.</p>
175
176       <p>Yerel içerik için, zaman aşımı süresini hassas olarak ayarlamak
177         gerekirse <module>mod_expires</module> kullanılabilir.</p>
178
179       <p>Zaman aşımı süresinin üst sınırı <directive
180         module="mod_cache">CacheMaxExpire</directive> yönergesi ile
181         belirlenebilir.</p>
182
183     </section>
184
185     <section>
186       <title>Şartlı İstekler için Özlü Kılavuz</title>
187
188       <p>Önbellekteki içerik zaman aşımına uğrayıp, içerik sağlayıcıya veya
189         arka sunucuya özgün isteği aktarmak yerine ayrı bir istek yapılması
190         gereği Apache’nin şartlı bir istek yapması sonucunu doğurur.</p>
191
192       <p>Bir istemcinin veya önbelleğin aynı içeriğin farklı sürümleri
193         arasında ayrım yapabilmesi için HTTP protokolü bazı başlık alanları
194         önerir. Örneğin, "Etag:" başlığıyla sunulan bir özkaynak için
195         "If-None-Match:" başlığıyla bir şartlı istek yapmak mümkün olduğu gibi
196         özkaynak "Last-Modified:" başlığıyla sunuluyorsa şartlı istek
197         "If-Modified-Since:" başlığıyla yapılabilir, vesaire.</p>
198
199       <p>Böyle bir şartlı istek yapıldığında yanıt koşulun içerikle eşleşip
200         eşleşmediğine bağlı olarak farklı olur. Eğer istek bir
201         "If-Modified-Since:" başlığıyla yapılmışsa ve içerik istekte
202         belirtilen zamandan önce değiştirilmemişse kısa ve öz olarak bir "304
203         Not Modified" (Bir değişiklik yok) iletisiyle yanıt verilir.</p>
204
205       <p>Aksi takdirde  bir şartlı istek yapılmamış gibi içeriğin kendisi
206         sunulur.</p>
207
208       <p>Önbellekleme ile ilgili şartlı istekler çifte yarar sağlar. Birinci
209         olarak, böyle bir istek arkadaki sunucuya yapılıyorsa ve iki içerik de
210         aynıysa bunu saptamak kolay olur ve özkaynağın tamamını aktarma
211         külfetinden kurtulunur.</p>
212
213       <p>İkinci olarak, şartlı istekler arka sunucuda normalden daha az
214         faaliyete sebep olur. Durağan dosyalar için bu genellikle
215         <code>stat()</code> veya  benzeri bir sistem çağrısıyla dosya
216         boyutları ve değişiklik zamanına bakmak şeklinde gerçekleşir.
217         Böylelikle Apache yerel içeriği önbellekliyor olsa bile ve hatta
218         içerik zaman aşımına da uğrasa önbellekteki dosyada bir değişiklik
219         olmadığı takdirde içeriği önbellekten sunmak daha hızlı olacaktır.
220         Çünkü dosyayı önbellekten okumak, arka sunucudan okumaktan daha
221         hızlıdır (bu, bellekten okumayla diskten okumayı karşılaştırmak
222         gibidir).</p>
223     </section>
224
225     <section>
226       <title>Neler Önbelleklenebilir?</title>
227
228       <p>Evvelce bahsedildiği gibi Apache’de iki tür önbellekleme yapılır ve
229         bunlar farklı yöntemlerle çalışır. <module>mod_file_cache</module>
230         önbelleklemesinde dosyalar Apache başlatıldığı zamanki içerikle
231         saklanır. Bu modül tarafından önbelleğe alınmış bir dosya için istek
232         geldiğinde isteğin yolu kesilip önbellekteki dosya sunulur.</p>
233
234       <p><module>mod_cache</module> önbelleklemesinde işler biraz daha
235         karışıktır. Bir isteğe hizmet sunulurken istenen içerik evvelce
236         önbelleklenmemişse önbellekleme modülü önce içeriğin
237         önbelleklenebilirliğine bakar. Bir yanıtın önbelleklenebilirliğini
238         belirleyen koşullar şunlardır:</p>
239
240       <ol>
241         <li>Önbellekleme bu URL ile etkin kılınabilmelidir. <directive
242         module="mod_cache">CacheEnable</directive> ve <directive
243         module="mod_cache">CacheDisable</directive> yönergelerine bakınız.</li>
244
245         <li>Yanıtın HTTP durum kodu 200, 203, 300, 301 veya 410 olmalıdır.</li>
246
247         <li>İstek bir HTTP GET isteği olmalıdır.</li>
248
249         <li>İstek bir "Authorization:" başlığı içeriyorsa yanıt önbelleğe
250           alınmayacaktır.</li>
251
252         <li>Eğer yanıt bir "Authorization:" başlığı içeriyorsa ayrıca
253           "Cache-Control:" başlığında da "s-maxage", "must-revalidate" veya
254           "public" değerlerinden birini içermelidir.</li>
255
256         <li>Eğer URL (GET yöntemi kullanan bir HTML formunun yaptığı gibi) bir
257           sorgu dizgesi içeriyorsa  yanıt, RFC2616’nın 13.9. bölümünde
258           açıklandığı gibi bir "Expires:" başlığı içermedikçe yanıt içeriği
259           önbelleğe alınmayacaktır.</li>
260
261         <li><directive module="mod_cache">CacheIgnoreNoLastMod</directive>
262           yönergesinin kullanımını gerektiren bir durum olmadıkça 200 durum
263           koduna sahip bir yanıtın "Etag", "Last-Modified" ve "Expires"
264           başlıklarından en az birini içermesi gerekir.</li>
265
266         <li><directive module="mod_cache">CacheStorePrivate</directive>
267           yönergesinin kullanımını gerektiren bir durum olmadıkça yanıt
268           "private" değerli bir "Cache-Control:" başlığı içerdiği takdirde
269           yanıtın içeriği önbelleğe alınmayacaktır.</li>
270
271         <li>Benzer şekilde, <directive module="mod_cache"
272           >CacheStoreNoStore</directive> yönergesi kullanılmamışsa yanıt
273           "no-store" değerli bir "Cache-Control:" başlığı içeriyorsa yanıt
274           içeriği önbelleğe alınmayacaktır.</li>
275
276         <li>Herşeyle eşleşen "*" değerli bir "Vary:" başlığı içeren bir
277           yanıtın içeriği önbelleğe alınmaz.</li>
278       </ol>
279     </section>
280
281     <section>
282       <title>Neler Önbelleklenmemeli?</title>
283
284       <p>Kısaca, istek zamana aşırı bağımlıysa ya da istek kısmen bile olsa
285         HTTP uzlaşımıyla bağdaşmıyorsa önbelleğe alınmamalıdır.</p>
286
287       <p>İçeriği istekçinin IP adresine bağlı olarak değişen veya her beş
288         dakikada bir değişikliğe uğrayan bir devingen içeriğe sahipseniz böyle
289         bir içerik asla önbelleğe alınmamalıdır.</p>
290
291       <p>Diğer taraftan, içerik HTTP başlığındaki değerlere bağlı olarak
292         değişiyorsa içeriğin bir "Vary" başlığı kullanılarak akıllıca
293         önbelleklenmesi imkanı mevcuttur.</p>
294     </section>
295
296     <section>
297       <title>Değişken/Uzlaşımlı İçerik</title>
298
299       <p>"Vary" başlıklı bir yanıt arka sunucudan istenirken
300         <module>mod_cache</module> tarafından alınmışsa akıllıca ele alınmaya
301         çalışılacaktır. Mümkünse, <module>mod_cache</module> gelecekte bu
302         içerikle ilgili isteklerin "Vary" başlıklı yanıtları olacağını
303         saptayacak ve önbellekten doğru içerikle yanıt verecektir.</p>
304
305       <p>Örneğin, bir yanıt şöyle bir başlık ile alınmışsa,</p>
306
307       <example>
308         Vary: negotiate,accept-language,accept-charset
309       </example>
310
311       <p><module>mod_cache</module> sadece accept-language ve accept-charset
312         başlıkları özgün istekle eşleşen önbellekli içeriği sunacaktır.</p>
313     </section>
314
315   </section>
316
317   <section id="security">
318     <title>Güvenlik Kaygıları</title>
319
320     <section>
321       <title>Erişim Denetimi ve Yetkilendirme</title>
322
323       <p><module>mod_cache</module> çoğunlukla bir karşı vekile sahip olmak
324         amacıyla kullanılır. Arka sunucunun sorgulanmasını gerektirmeyen tüm
325         istekler önbellekleme modülü tarafından karşılanacaktır. Yerel
326         özkaynakların önbelleklenmesi söz konusu olduğunda Apache’nin güvenlik
327         modeli büyükçe bir değişikliğe uğrar.</p>
328
329       <p>Olası <code>.htaccess</code> dosyalarının dosya sisteminin tamamında
330         taranması çok pahalı bir işlem olduğundan <module>mod_cache</module>,
331         (işlemi hızlandırmak için) önbelleğe almanın temel amacını kısmen
332         gözardı ederek, önbellekteki içeriğin sunumu için gerekli
333         yetkilendirmenin olup olmadığı konusunda bir karar üretmez. Başka bir
334         deyişle, eğer <module>mod_cache</module> bir kısım içeriği önbelleğe
335         almışsa içerik zaman aşımına uğramadığı sürece bu içerik önbellekten
336         sunulacaktır.</p>
337
338       <p>Örneğin, yapılandırmanız bir özkaynağa IP adresine göre erişime izin
339         veriyorsa bu içeriğin önbelleğe alınmayacağından emin olmalısınız.
340         Bunu <directive module="mod_cache">CacheDisable</directive>
341         yönergesini veya <module>mod_expires</module> kullanarak
342         yapabilirsiniz. Bunu yapmaz, olayı kendi haline bırakırsanız
343         <module>mod_cache</module> bir karşı vekil gibi çalışarak sunulan her
344         içeriği arabelleğe alacak ve hangi IP adresinden gelirse gelsin her
345         istemciye bunu sunacaktır.</p>
346     </section>
347
348     <section>
349       <title>Yerel İstismarcılar</title>
350
351       <p>Son kullanıcılarıın isteklerine önbellekten hizmet sunulduğundan
352         önbelleğin kendisi içerikle etkileşime geçmek isteyenlerin veya
353         içeriği tahrif etmek isteyenlerin hedefi haline gelebilir. Apache’yi
354         çalıştıran kullanıcı tarafından her zaman önbelleğe yazılabileceğini
355         akıldan çıkarmamak önemlidir. Bu durumda alışılmışın tersine tüm
356         içeriğin Apache kullanıcısı tarafından yazılamamasının sağlanması
357         önerilir.</p>
358
359       <p>Eğer Apache kullanıcısı, örneğin bir CGI sürecindeki açık nedeniyle
360         tehlikeye atılırsa, önbellek hedef alınabilir.
361         <module>mod_disk_cache</module> kullanılırken önbellekteki bir öğeyi
362         değiştirmek veya önbelleğe yeni bir öğe eklemek görece daha
363         kolaydır.</p>
364
365       <p>Bu risk, Apache kullanıcısını kullanan diğer saldırı türleriyle
366         karşılaştırıldığında daha yüksektir. <module>mod_disk_cache</module>
367         kullanıyorsanız şunları aklınızdan çıkarmayın: (1) Apache güvenlik
368         güncellemelerini takip edin ve sunucunuzu buna göre güncelleyin. (2)
369         Mümkünse <a href="suexec.html">suEXEC</a> kullanarak CGI süreçlerini
370         Apache kullanıcısı olmayan bir kullanıcının aidiyetinde çalıştırın.</p>
371
372     </section>
373
374     <section>
375       <title>Önbellek Zehirlenmeleri</title>
376
377       <p>Apache bir önbellekli vekil sunucu olarak çalıştığında önbellek
378         zehirlenmesi adı verilen sorunla karşılaşılma olasılığı vardır.
379         Önbellek zehirlenmesi, vekil sunucunun arka sunucudan yanlış (ve
380         genellikle istenmeyen) içerik almasına sebep olan bir saldırı türünü
381         betimlemek için yaygın olarak kullanılan bir terimdir.</p>
382
383       <p>Örneğin Apache’nin çalıştığı sistemin kullandığı DNS sunucuları DNS
384         önbellek zehirlenmesinden etkilenebilecek durumdaysa, bir saldırgan
385         Apache’nin istekleri almak için başvuracağı kaynak sunucunun yerini
386         değiştirebilir. Diğer bir örnek, HTTP istek kaçakçılığı adı verilen
387         bir saldırı türüdür.</p>
388
389       <p>Bu belge HTTP istek kaçakçılığını derinliğine incelenmesi için uygun
390         yer değildir (böyle kaynaklara arama motorunuzla erişebilirsiniz).
391         Bununla birlikte, vekil tarafından kaynak sunucudan alınan içeriği
392         tamamen denetim altına almak amacıyla kaynak sunucudaki bir açığı
393         istismar etmeye yönelik bir dizi istek yapılabileceğinin olasılık
394         dahilinde olduğunu bilmenizde yarar vardır.</p>
395     </section>
396   </section>
397
398   <section id="filehandle">
399     <title>Dosya Tanıtıcı Önbelleklemesi</title>
400
401     <related>
402       <modulelist>
403         <module>mod_file_cache</module>
404       </modulelist>
405       <directivelist>
406         <directive module="mod_file_cache">CacheFile</directive>
407         <directive module="mod_cache">CacheEnable</directive>
408         <directive module="mod_cache">CacheDisable</directive>
409       </directivelist>
410     </related>
411
412     <p>Bir dosyanın açılması işlemi, özellikle de ağ dosya sistemlerinde
413       bulunan dosyalar için önemli bir gecikme kaynağı olabilir. Önbellekte,
414       çok sunulan dosyaların kendilerinin değil, açık dosya tanıtıcılarının
415       saklanması Apache’yi bu tür gecikmelerden koruyabilir. Apache’de tek türde
416       dosya tanıtıcı önbelleklemesi yapılabilmektedir.</p>
417
418     <section>
419       <title><code>CacheFile</code> yönergesi ile</title>
420
421       <p>Apache’de mevcut önbelleklemenin en temel şekli
422         <module>mod_file_cache</module> tarafından sağlanan dosya tanıtıcı
423         önbelleklemesidir. Bu önbellek türü dosyaların kendilerini değil açık
424         dosya tanıtıcılarının bir listesini saklar. Dosyaların bu anlamda
425         önbelleklenmesi, <directive module="mod_file_cache"
426         >CacheFile</directive> yönergesi yapılandırma dosyasında belirtilerek
427         sağlanabilir.</p>
428
429       <p><directive module="mod_file_cache">CacheFile</directive> yönergesi
430         belirtilen dosyanın Apache başlatıldığında açılmasını ve dosya için
431         yapılan sonraki her istekte bu dosya tanıtıcısının kullanılmasını
432         sağlar.</p>
433
434       <example>
435         CacheFile /usr/local/apache2/htdocs/index.html
436       </example>
437
438       <p>Büyük miktarda dosyayı bu anlamda önbelleklemeyi tasarlıyorsanız
439         işletim sisteminizin açık dosya tanıtıcılarının sayısı ile ilgili
440         sınırlamasını uygun bir değere ayarlamanız gerekebilir.</p>
441
442       <p><directive module="mod_file_cache">CacheFile</directive> yönergesini
443         kullandığınız takdirde dosya içeriğindeki değişiklikleri anında isteğe
444         yansıtamazsınız. Apache dosyayı ilk başlatıldığındaki haliyle
445         sunar.</p>
446
447       <p>Eğer Apache çalışırken dosya silinmişse Apache ilk başlatıldığındaki
448         haline ilişkin dosya tanıtıcıyı sağlamaya ve dolayısıyla dosya
449         içeriğini sunmaya devam edecektir. Yani, dosya silinmiş ve artık dosya
450         sisteminde görünmüyor olsa bile Apache durdurulup dosya tanıtıcıları
451         kapanmadıkça dosyaların silinmesiyle açılan yer serbest
452         kalmayacaktır.</p>
453     </section>
454   </section>
455
456   <section id="inmemory">
457     <title>Sistem Belleğinde Önbellekleme</title>
458
459      <related>
460       <modulelist>
461         <module>mod_file_cache</module>
462       </modulelist>
463       <directivelist>
464         <directive module="mod_cache">CacheEnable</directive>
465         <directive module="mod_cache">CacheDisable</directive>
466         <directive module="mod_file_cache">MMapFile</directive>
467       </directivelist>
468     </related>
469
470     <p>İçeriğin sistem belleğinden sunulması içerik sunmanın evrensel olarak
471       en hızlı yoludur. Dosyaların bir disk denetleyiciden okunması ya da daha
472       kötüsü uzak bir ağdan okunması bellekten okumayla karşılaştırılamayacak
473       ölçüde yavaş işlemlerdir. Disk denetleyiciler genellikle fiziksel
474       süreçleri denetlerler. Ağ erişimi ise band genişliği sınırlamalarından
475       etkilenir. Halbuki bellek erişimi sadece nano saniyeler mertebesinde
476       gerçekleşir.</p>
477
478     <p>Sistem belleği en pahalı saklama ortamı olması sebebiyle en verimli
479       şekilde kullanımı önemlidir. Dosyaları sistem belleğinde saklamakla
480       sistemin kullanabileceği bellek miktarını azaltmış olursunuz. İşletim
481       sistemi önbelleklemesinde göreceğiniz gibi bu öyle basit bir konu
482       değildir. Apache’nin kendi kullandığı belleğin bir kısmını önbellek
483       olarak ayırırken çok fazla bellek kullanmamak önemlidir. Aksi takdirde
484       işletim sistemi belleğin yetmediği noktada belleği diske
485       takaslayacağından istenen başarım artışı sağlanamayacaktır.</p>
486
487     <section>
488       <title>İşletim Sistemi Önbelleklemesi</title>
489
490       <p>Günümüz iştetim sistemlerinin hemen hemen tamamında bellek içi
491         dosya/veri saklama işlemlerini çekirdek yönetir. Bu güçlü bir
492         özelliktir ve işletim sistemlerinin büyük çoğunluğu bunu böyle yapar.
493         Örneğin, Linux’ta bir dosyanın ilk defa okunduğunda ve ikinci kez
494         okunduğunda işlemcinin ne kadar meşgul edildiğine bakalım:</p>
495
496       <example>
497         colm@coroebus:~$ time cat testfile &gt; /dev/null<br />
498         real    0m0.065s<br />
499         user    0m0.000s<br />
500         sys     0m0.001s<br />
501         colm@coroebus:~$ time cat testfile &gt; /dev/null<br />
502         real    0m0.003s<br />
503         user    0m0.003s<br />
504         sys     0m0.000s
505       </example>
506
507       <p>Küçük bir dosya için bile okuma süresi bakımından büyük fark ortaya
508         çıkmaktadır. Bunun sebebi çekirdeğin dosya içeriğini bellek daha
509         güncel amaçlar için lazım olana dek bellek içinde saklamasıdır.</p>
510
511       <p>Sisteminizde yeterince yedek bellek olduğundan eminseniz, bu
512         önbellekte daha fazla dosya saklanacağından emin olabilirsiniz.
513         Bundan, önbelleğin sistem belleğinde verimli biçimde tutulması için
514         Apache’de ek bir yapılandırmaya gidilmesinin gerekmediği sonucu
515         çıkarılabilir.</p>
516
517       <p>Bundan başka, işletim sistemi dosyaların değiştiği ve silindiği
518         zamanları bildiğinden bu tür dosyaların içerikleri gerektiğinde
519         önbellekten kendiliğinden silinmiş olur. Bellek içinde dosya saklarken
520         dosyaların değiştirilme zamanlarını bilme olanağı olmadığından bu
521         durum Apache’ye büyük yarar sağlar.</p>
522     </section>
523
524     <p>İşletim sisteminin dosyaların önbelleklenmesi için sağladığı bunca
525       yarara ve başarım artışına karşın bellek içinde dosya önbelleklemenin
526       Apache tarafından yerine getirilmesinin daha iyi olacağı bazı durumlar
527       vardır.</p>
528
529     <section>
530       <title><code>MMapFile</code> yönergesi ile</title>
531
532       <p><module>mod_file_cache</module> modülü, bir durağan dosyanın
533         içeriğini sunucunun başlatılması sırasında (mmap sistem çağrısıyla)
534         belleğe eşlenmesini mümkün kılmak için <directive
535         module="mod_file_cache" >MMapFile</directive> yönergesini sağlar.
536         Apache bu dosyaya gelecek sonraki istekler için dosyanın bellekiçi
537         içeriğini kullanacaktır.</p>
538
539       <example>
540         MMapFile /usr/local/apache2/htdocs/index.html
541       </example>
542
543       <p><directive module="mod_file_cache">CacheFile</directive> yönergesinde
544         olduğu gibi bu dosyalarda Apache başlatıldıktan sonra yapılacak bir
545         değişiklikten Apache’nin haberi olmayacaktır.</p>
546
547       <p><directive module="mod_file_cache">MMapFile</directive> yönergesi
548         ayırdığı belleğin toplam miktarı ile ilgilenmez, dolayısıyla
549         yönergenin aşırı kullanımından kaçınmalısınız. Apache’nin çocuk
550         süreçlerinin her biri bu belleğin kendilerine ait birer kopyasını
551         yapacağından belleğe eşlenen dosyaların çok yer kaplamaması büyük önem
552         taşımaktadır; aksi takdirde işletim sistemi belleği diske
553         takaslayacağından beklenen fayda sağlanamayacaktır.</p>
554     </section>
555   </section>
556
557   <section id="disk">
558     <title>Disk Üzerinde Önbellekleme</title>
559
560      <related>
561       <modulelist>
562         <module>mod_disk_cache</module>
563       </modulelist>
564       <directivelist>
565         <directive module="mod_cache">CacheEnable</directive>
566         <directive module="mod_cache">CacheDisable</directive>
567       </directivelist>
568     </related>
569
570     <p><module>mod_disk_cache</module> modülü önbelleklemenin
571       <module>mod_cache</module> için disk üzerinde yapılmasını mümkün
572       kılar. Bbu önbellekleme akıllıca yapılır ve önbellekteki içerik
573       sadece geçerli kabul edildiği sürece sunulabilir.</p>
574
575     <p>Modül bu amaçla genelde şöyle kullanılır:</p>
576
577     <example>
578       CacheRoot   /var/cache/apache/<br />
579       CacheEnable disk /<br />
580       CacheDirLevels 2<br />
581       CacheDirLength 1
582     </example>
583
584     <p>En önemlisi önbelleklenen dosyaların yerel olarak saklanması olup
585       işletim sisteminin sağladığı bellekiçi önbelleklemeden de ayrıca
586       faydalanılmış olur. Bu bakımdan, dosyalar disk üzerinde saklansa bile
587       sıkça erişilen dosyalar işletim sistemi sayesinde aslında bellekten
588       sunulmuş olacaklardır.</p>
589
590     <section>
591       <title>Önbellekte Saklamanın Anlamı</title>
592
593       <p><module>mod_disk_cache</module> öğeleri önbellekte saklamak için
594         istek yapılan URL’nin 22 karakterlik özetini oluşturur. Bu özet, çok
595         sayıda URL’nin aynı özeti oluşturmaması için konak ismi, protokol,
596         port ve varsa CGI argümanlarından oluşur.</p>
597
598       <p>Özeti oluşturan karakterler 64 karakterlik bir karakter kümesinden
599         seçildiğinden oluşturulması olası farklı özet sayısı 64^22’dir.
600         Örneğin, bir URL’nin <code>xyTGxSMO2b68mBCykqkp1w</code> gibi bir
601         özeti olabilir. Bu özet, bu URL ile erişilen dosyalar önbellek içinde
602         saklanırken dosya ismi öneki olarak kullanılır. Ancak bununla
603         yetinilmez ve içerik <directive
604         module="mod_disk_cache">CacheDirLevels</directive> ve <directive
605         module="mod_disk_cache">CacheDirLength</directive> yönergelerinin
606         değerlerine göre önce dizinlere ayrılır.</p>
607
608       <p><directive module="mod_disk_cache">CacheDirLevels</directive>
609         yönergesi kaç alt seviye dizin olacağını belirler. Örneğin, yukarıdaki
610         özete sahip bir dosyanın isminin başına yukarıdaki yapılandırma
611         örneğine uygun olarak
612         <code>/var/cache/apache/x/y/TGxSMO2b68mBCykqkp1w</code> gibi bir önek
613         getirilebilirdi.</p>
614
615       <p>Bu tekniğin asıl amacı belli bir dizin içinde bulunabilecek
616         dosyaların ve alt dizinlerin sayısını düşük tutmaktır. Bu sayının
617         büyük olması çoğu işletim sisteminde başarımın düşmesine sebep olur.
618         <directive module="mod_disk_cache">CacheDirLength</directive>
619         yönergesi "1" değeriyle kullanıldığında her dizin altında en fazla 64
620         alt dizin veya dosya açılabilir. "2" değeriyle kullanıldığında ise bu
621         sayı 64^2’ye yükselir ve böyle artarak gider. İyi bir sebebiniz
622         olmadıkça <directive
623         module="mod_disk_cache">CacheDirLength</directive> için değer olarak
624         "1" belirtmenizi öneririz.</p>
625
626       <p><directive module="mod_disk_cache">CacheDirLevels</directive>
627         yönergesine atanacak değer önbellekte saklamayı düşündüğünüz olası
628         dosya sayısı ile ilgilidir. Yukarıdaki örnekte olduğu gibi "2"
629         değerini belirtirseniz, toplamda en fazla 4096 dizin oluşturulabilir.
630         1 milyon dosyanın önbelleklendiği bir durumda bu, her dizinde yaklaşık
631         olarak 245 önbelleklenmiş URL demektir.</p>
632
633       <p>Her URL için önbellekte en az iki dosya saklanır. Biri genellikle URL
634         hakkındaki temel verilerden oluşan ".header" dosyasıdır, diğeri ise
635         sunulacak içeriğin bire bir kopyası olan ".data" dosyasıdır.</p>
636
637       <p>"Vary" başlığı üzerinden içeriğin uzlaşıldığı durumda URL için bir
638         ".vary" dizini oluşturulur. Bu dizin her biri farklı bir uzlaşıma ait
639         çok sayıda ".data" dosyası içerebilir.</p>
640     </section>
641
642     <section>
643       <title>Disk Önbelleğinin Bakımı</title>
644
645       <p><module>mod_disk_cache</module> zaman aşımına uğrayan önbellekli
646         içeriği silse de önbelleğin toplam boyu ve ne kadar boş bellek kaldığı
647         hakkında bilgi vermez.</p>
648
649       <p>Bunun yerine Apache önbellek içeriğini düzenli aralıklarla
650         temizleyebilmeniz için <program>htcacheclean</program> adında bir araç
651         içerir.  Önbellek için azami ne kadar yer kullanılacağının ve bunun
652         üzerinde <program>htcacheclean</program>’i hangi sıklıkta
653         çalıştırılacağının tespiti biraz karmaşık bir işlem olup uygun değerler
654         genellikle deneme yanılma yoluyla bulunur.</p>
655
656       <p><program>htcacheclean</program> iki işlem kipine sahiptir. Kalıcı bir
657         artalan süreci olarak çalışabileceği gibi cron üzerinden belli
658         aralıklarla da çalıştırılabilir. Çok büyük (onlarca GB) önbelleklerde
659         <program>htcacheclean</program>’in işini bitirmesi 1 saatten fazla
660         sürebileceğinden, cron ile çalıştırma durumunda aynı anda birden fazla
661         kopyanın çalışıyor durumda olmaması için
662         <program>htcacheclean</program>’in çalıştırılma aralığını iyi
663         belirlemek gerekir.</p>
664
665       <p class="figure">
666       <img src="images/caching_fig1.tr.png" alt="" width="600"
667           height="406" /><br />
668       <a id="figure1" name="figure1"><dfn>Şekil 1</dfn></a>:
669  Önbelleğin büyümesi ve düzenli aralıklarla temizlenmesi.</p>
670
671       <p><module>mod_disk_cache</module> ne kadar önbellek alanı kullandığı
672         ile ilgili bir bilgi vermediğinden <program>htcacheclean</program>’in
673         bir temizlik sonrası yeterince büyük bir genişleme alanı kalacak
674         şekilde yapılandırılması önemlidir.</p>
675     </section>
676
677   </section>
678
679 </manualpage>