]> granicus.if.org Git - apache/blob - docs/manual/caching.xml.tr
Rebuild.
[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: 1291840:1766103 (outdated) -->
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_cache_disk</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 HTTPD sunucusunun ö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 sunucusu, sunucunun başarımını çeşitli yollarla arttırmak
45       üzere tasarlanmış bir dizi önbellekleme özelliğine sahiptir.</p>
46
47     <dl>
48         <dt>Üç durumlu RFC2616 HTTP önbelleklemesi</dt>
49         <dd>
50             <module>mod_cache</module> ve destek modülü
51             <module>mod_cache_disk</module> akılcı ve HTTP'ye uygun
52             önbellekleme sağlar. İçeriğin kendisi önbellekte saklanır ve
53             <module>mod_cache</module>, <a
54             href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html"
55             >RFC2616'nın 13. bölümü</a>nde açıklandığı gibi, içeriğin
56             önbelleklenebilirliğini denetleyen çeşitli HTTP başlıklarının ve
57             seçeneklerinin tümünü onurlandırmayı hedefler.
58             Devingen yerel içerik veya vekalet edilen içerik ile ilgilendiğiniz
59             durumda veya muhtemel bir yavaş disk üzerinde yerel dosyalara
60             erişimi hızlandırmak ihtiyacında olduğunuz durumda
61             <module>mod_cache</module> hem basit hem de karmaşık önbellekleme
62             yapılandırmalarını hedefler.
63         </dd>
64         <dt>İki durumlu anahtar/değer paylaşımlı nesne önbellekleme</dt>
65         <dd>
66             <a href="socache.html">Paylaşımlı nesne önbellek API'si</a>
67             (socache) ve destek modülleri sunucu taraflı bir anahtar/değer
68             paylaşımlı nesne önbelleklemesi sağlar. Bu modüller SSL oturumları
69             ve kimlik doğrulama bilgileri gibi düşük seviyeli verileri
70             önbelleklemek için tasarlanmıştır. Destek modülleri verinin sunucu
71             tarafı bir paylaşımlı bellekte veya veri merkezi tarafı memcache
72             veya distcache gibi bir önbellekte saklanmasını mümkün kılar.
73         </dd>
74         <dt>Uzmanlaşmış dosya önbellekleme</dt>
75         <dd>
76             <module>mod_file_cache</module> dosyaların sunucunun başlatılması
77             sırasında  belleğe yüklenmesi ile ilgilenir. Böylece dosyalara
78             erişim zamanını kısaltabilir, sıkça erişilen dosyaların dosya
79             tanıtıcılarını kaydedebilir, her istekte diske gitme ihtiyacını
80             ortadan kaldırır.
81         </dd>
82     </dl>
83
84     <p>Bu belgeden azami yararı sağlayabilmek için temel bir HTTP bilginizin
85       olması ve <a href="urlmapping.html">URL’lerin Dosya Sistemine
86       Eşlenmesi</a> ile <a href="content-negotiation.html">İçerik Uzlaşımı</a>
87       belgelerini okumuş olmanız gerekir.</p>
88
89   </section>
90
91   <section id="http-caching">
92
93     <title>Üç durumlu RFC2616 HTTP önbelleklemesi</title>
94
95     <related>
96       <modulelist>
97         <module>mod_cache</module>
98         <module>mod_cache_disk</module>
99       </modulelist>
100       <directivelist>
101         <directive module="mod_cache">CacheEnable</directive>
102         <directive module="mod_cache">CacheDisable</directive>
103         <directive module="core">UseCanonicalName</directive>
104         <directive module="mod_negotiation">CacheNegotiatedDocs</directive>
105       </directivelist>
106     </related>
107
108     <p>HTTP protokolü
109       <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html"
110       >RFC2616'nın 13. bölümü</a>nde açıklanan satıriçi önbellekleme
111       mekanizması için yerleşik bir destek içerir ve bunun getirilerinden
112       yararlanmak için <module>mod_cache</module> modülü kullanılabilir.</p>
113
114     <p>İçeriğin taze olmadığı durumda içeriğin kaybolmasına sebep olan basit
115       iki durumlu anahtar/değer önbelleklemesinin tersine, HTTP önbelleği
116       eskimiş içeriği tutan ve bu eski içeriğin değişip değişmediğini özgün
117       sunucuya soran ve duruma göre onu tekrar taze duruma getiren bir
118       mekanizma içerir.</p>
119
120     <p>HTTP önbelleğinde bulunan bir girdi şu üç durumdan birinde olabilir:</p>
121
122     <dl>
123     <dt>Taze</dt>
124     <dd>
125         İçerik yeteri kadar yeni (<strong>tazelik ömrü</strong>nden daha genç)
126         ise <strong>taze</strong> sayılır. Bir HTTP önbelleği böyle bir içeriği
127         özgün sunucuya birşey sormadan sunabilir.
128     </dd>
129     <dt>Bayat</dt>
130     <dd>
131         <p>İçerik çok eski (<strong>tazelik ömrü</strong>nden daha yaşlı)
132         ise <strong>bayat</strong> sayılır. Bir HTTP önbelleği böyle bir
133         içeriği istemciye sunmadan önce özgün sunucuya bağlanıp bayat içeriğin
134         hala yeterince taze olup olmadığına bakmalıdır. Özgün sunucu, içerik
135         geçersizse yenisini gönderecektir, aksi takdirde, (ideal olanı budur)
136         içeriğin hala geçerli olduğunu belirten bir kod ile yanıt verecektir.
137         İçerik tekrar taze hale gelince süreç kaldığı yerden devam eder.</p>
138
139         <p>HTTP protokolü belli koşullar altında önbelleğin bayat içeriği
140         sunmasına izin vermez. Örneğin, bir içeriği özgün sunucuda tazeleme
141         çabasının bir 5xx hatasıyla başarısız olması veya başka bir tazeleme
142         isteğinin henüz sonuçlanmamış olması bu çeşit koşullardandır. Bu
143         durumlarda yanıta bir <code>Warning</code> başlığı eklenir.</p>
144     </dd>
145     <dt>Yok</dt>
146     <dd>
147         Önbellekte yer kalmazsa yer açmak için içeriğin silinmesi seçenek
148         dahilindedir. İçerik taze olsun olmasın her zaman silinebilir. Önlem
149         olarak <program>htcacheclean</program> elle veya bir artalan süreci
150         olarak çalıştırılabilir. Böylece önbelleğin boyutunun belirtilen
151         boyutta veya belirtilen dosya düğümü sayısında kalması sağlanabilir.
152         Araç içeriği silerken bayat içeriğe öncelik verir.
153     </dd>
154     </dl>
155
156     <p>HTTP önbelleklemesinin çalışması ile ilgili bütün ayrıntılar
157     <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html"
158     >RFC2616'nın 13. bölümünde</a> bulunabilir.</p>
159
160     <section>
161       <title>Sunucu ile etkileşim</title>
162
163       <p><module>mod_cache</module> modülü
164       <directive module="mod_cache">CacheQuickHandler</directive> yönergesinin
165       değerine bağlı olarak iki olası yerde sunucuya bağlanır:
166       </p>
167
168       <dl>
169       <dt>Çabuk eylem aşaması</dt>
170       <dd>
171           <p>Bu aşama çok erken gerçekleşen bir aşama olup isteğin işlenmesi
172           sırasında isteğin çözümlenmesinin hemen sonrasıdır. İçerik
173           önbellekte mevcutsa hemen sunulur ve geri kalan istek işleme işlemi
174           iptal edilir.</p>
175
176           <p>Bu senaryoda önbellek sunucunun önüne vidalanmış gibi
177           davranır.</p>
178
179           <p>Sunucuda gerçekleşecek bir dizi işlemin büyük çoğunluğunun
180           yapılmadan geçilmesi nedeniyle bu en yüksek başarımlı kiptir.
181           Bu kip ayrıca, sunucu işlemlerinin kimlik doğrulama ve yetkilendirme
182           aşamalarının da yapılmadan geçilmesini sağlar. Bu bakımdan bu kip
183           seçilirken bu durum dikkate alınmalıdır.</p>
184       </dd>
185       <dt>Normal eylem aşaması</dt>
186       <dd>
187           <p>Bu aşama geç bir aşama olup, isteğin tamamen işlenmesinin
188           sonrasıdır.</p>
189
190           <p>Bu senaryoda önbellek sunucunun arkasına vidalanmış gibi
191           davranır.</p>
192
193           <p>Bu kip en esneğidir. Önbelleğin, süzme zincirinin hassas olarak
194           denetlenen bir noktasında oluşması sağlanabilir ve önbelleklenen
195           içerik istemciye gönderilmeden önce süzülüp
196           kişiselleştirilebilir.</p>
197           </dd>
198         </dl>
199
200         <p>URL önbellekte yoksa <module>mod_cache</module> modülü yanıtı
201           önbelleğe kaydetme aşamasında süzgeç yığıtına bir
202           <a href="filter.html">süzgeç</a> ekler ve geri çekilerek normal istek
203           işlemlerinin devam etmesine izin verir. İçeriğin önbelleklenebilir
204           olduğu saptanırsa içerik gelecekte sunulmak üzere önbelleğe
205           kaydedilir, aksi takdirde içerik yok sayılır.</p>
206
207         <p>Önbellekteki içerik bayatsa, <module>mod_cache</module> modülü
208           isteği bir <strong>koşullu istek</strong> haline getirir. Özgün
209           sunucu normal bir yanıt verirse bu yanıt mevcut içeriğin yerine
210           önbelleklenir. Özgün sunucu bir <code>304 Not Modified</code> yanıtı
211           verirse içerik tekrar taze olarak imlenir ve önbellekteki içerik
212           süzgeç tarafından kaydedilmeden sunulur.</p>
213     </section>
214
215     <section>
216       <title>Önbelleğin Hızlandırılması</title>
217
218       <p>Bir sanal konak birçok farklı sunucu takma adından biri olarak
219         bilindiği takdirde <directive
220         module="core">UseCanonicalName</directive> yönergesine <code>On</code>
221         değeri atanmışsa önbellekten sunulan sayfa sayısında büyük bir artış
222         olduğu görülür. Bunun sebebi içeriği sunan sanal konağın isminin
223         önbellek anahtarının içinde kullanılmasıdır. Yönergeye
224         <code>On</code> değerini atamak suretiyle çok isimli ve rumuzlu sanal
225         konaklar için farklı önbellek girdileri oluşturulmaz, bunun yerine her
226         meşru sanal konak için ayrı bir önbellek tutulur.</p>
227     </section>
228
229     <section>
230       <title>Tazelik Ömrü</title>
231
232       <p>Önbelleklenmek üzere tasarlanmış iyi biçimli bir içerik tazelik ömrünü
233         <code>Cache-Control</code> başlığının  <code>max-age</code> veya
234         <code>s-maxage</code> alanlarıyla ya da bir <code>Expires</code>
235         başlığını içererek bildirmelidir.</p>
236
237       <p>Aynı zamanda, özgün sunucunun tanımladığı tazelik ömrü, bir istemci
238         tarafından istekte bir <code>Cache-Control</code> başlığı kullanılarak
239         geçersiz kılınmak istenebilir. Bu durumda hangi tazelik ömrü daha
240         kısaysa o geçerli olur.</p>
241
242       <p>Tazelik ömrü istekte veya yanıtta mevcut değilse öntanımlı bir tazelik
243         ömrü kullanılır. Öntanımlı tazelik ömrü önbellekli içerik için bir saat
244         olmakla birlikte <directive
245         module="mod_cache">CacheDefaultExpire</directive> yönergesi
246         kullanılarak kolayca değiştirilebilir.</p>
247
248       <p>Bir yanıt <code>Expires</code> başlığını değil de
249         <code>Last-Modified</code> başlığını içeriyorsa
250         <module>mod_cache</module> tazelik ömrünü <directive
251         module="mod_cache">CacheLastModifiedFactor</directive> yönergesine
252         bakarak saptar.</p>
253
254       <p>Yerel içerik için, ya da kendi <code>Expires</code> başlığını
255         tanımlamayan uzak içerik için tazelik ömrünü <code>max-age</code> ve
256         <code>Expires</code> ekleyerek hassas olarak ayarlamak
257         için <module>mod_expires</module> kullanılabilir.</p>
258
259       <p>Tazelik ömrünün üst sınırı <directive
260         module="mod_cache">CacheMaxExpire</directive> yönergesi ile
261         belirlenebilir.</p>
262     </section>
263
264     <section>
265       <title>Şartlı İstekler için Özlü Kılavuz</title>
266
267       <p>Önbellekteki içeriğin zaman aşımına uğrayıp bayat hale gelmesi,
268         httpd’nin özgün isteği aktarmak yerine isteği değişikliğe uğratarak
269         şartlı bir istek yapması sonucunu doğurur.</p>
270
271       <p>Özgün önbellekli yanıtta bir <code>ETag</code> başlığı mevcutsa,
272         <module>mod_cache</module> modülü özgün sunucuya yapılan isteğe
273         bir <code>If-None-Match</code> başlığı ekler.
274         Özgün önbellekli yanıtta bir <code>Last-Modified</code> başlığı
275         mevcutsa, <module>mod_cache</module> modülü özgün sunucuya yapılan
276         isteğe bir <code>If-Modified-Since</code> başlığı ekler. Bunlardan
277         birinin varlığı isteği <strong>koşullu</strong> yapar.</p>
278
279       <p>Bir koşullu istek özgün sunucu tarafından alındığında, özgün sunucu
280         <code>ETag</code> veya <code>Last-Modified</code> başlığının isteğe
281         uygun olarak değişip değişmediğine bakmalıdır. Değişmemişse, özgün
282         sunucu kısa ve öz bir "304 Not Modified" yanıtı ile yanıt vermelidir.
283         Bunun önbellekteki anlamı şudur: Eskimiş içerik hala tazedir ve içerik
284         yeni tazelik ömrüne ulaşıncaya kadar sonraki isteklerde
285         kullanılmalıdır.</p>
286
287       <p>İçerik değişmişse, bir şartlı istek yapılmamış gibi içeriğin kendisi
288         sunulur.</p>
289
290       <p>Şartlı istekler çifte yarar sağlar. Birinci olarak, böyle bir istek
291         özgün sunucuya yapılıyorsa ve iki içerik de aynıysa bunu saptamak kolay
292         olur ve özkaynağın tamamını aktarma külfetinden kurtulunur.</p>
293
294       <p>İkinci olarak, iyi tasarlanmış bir özgün sunucu, koşullu istekler tam
295         bir yanıt üretmekten önemli ölçüde ucuz olacak şekilde tasarlanmış
296         olacaktır. Durağan dosyalar için bu genellikle
297         <code>stat()</code> veya  benzeri bir sistem çağrısıyla dosya
298         boyutları ve değişiklik zamanına bakmak şeklinde gerçekleşir.
299         Böylelikle, yerel içeriği bir değişiklik olmadığı takdirde önbellekten
300         sunmak daha hızlı olacaktır.</p>
301
302       <p>Özgün sunucular koşullu istekleri desteklemek için her türlü çabayı
303         göstermelidir. Ancak, koşullu istekler desteklenmiyorsa, özgün sunucu
304         istek koşullu değilmiş gibi yanıt vermeli, önbellek ise, içerik
305         değişmiş ve yani içerik önbelleğe kaydedilmiş gibi yanıt vermelidir. Bu
306         durumda, önbellek basit bir iki durumlu (içerik ya tazedir ya da
307         silinmiş) önbellek gibi davranacaktır.</p>
308     </section>
309
310     <section>
311       <title>Neler Önbelleklenebilir?</title>
312
313       <p>HTTP önbelleğin tarafından önbelleklenebilecek içerik
314 <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html#sec13.4">
315        RFC2616 Section 13.4 Response Cacheability</a> belgesinde tanımlanmış
316        olup, bunlar şöyle özetlenebilir:</p>
317
318       <ol>
319         <li>Önbellekleme bu URL ile etkin kılınabilmelidir. <directive
320         module="mod_cache">CacheEnable</directive> ve <directive
321         module="mod_cache">CacheDisable</directive> yönergelerine bakınız.</li>
322
323         <li>Yanıtın HTTP durum kodu 200, 203, 300, 301 veya 410 olmalıdır.</li>
324
325         <li>İstek bir HTTP GET isteği olmalıdır.</li>
326
327         <li>Eğer yanıt bir "Authorization:" başlığı içeriyorsa ayrıca
328           "Cache-Control:" başlığında da "s-maxage", "must-revalidate" veya
329           "public" değerlerinden birini içermelidir, aksi takdirde
330           önbelleklenmez.</li>
331
332         <li>Eğer URL (GET yöntemi kullanan bir HTML formunun yaptığı gibi) bir
333           sorgu dizgesi içeriyorsa  yanıt, RFC2616’nın 13.9. bölümünde
334           açıklandığı gibi bir "Expires:" başlığı içermedikçe veya
335           "Cache-Control:" başlığının max-age veya max-age yönergesini
336           içermedikçe yanıt içeriği önbelleğe alınmayacaktır.</li>
337
338         <li><directive module="mod_cache">CacheIgnoreNoLastMod</directive>
339           yönergesinin kullanımını gerektiren bir durum olmadıkça 200 durum
340           koduna sahip bir yanıtın "Etag", "Last-Modified" ve "Expires"
341           başlıklarından birini veya "Cache-Control:" başlığının "max-age" veya
342           "s-maxage" yönergelerinden birini (en azından) içermesi gerekir.</li>
343
344         <li><directive module="mod_cache">CacheStorePrivate</directive>
345           yönergesinin kullanımını gerektiren bir durum olmadıkça yanıt
346           "private" değerli bir "Cache-Control:" başlığı içerdiği takdirde
347           yanıtın içeriği önbelleğe alınmayacaktır.</li>
348
349         <li>Benzer şekilde, <directive module="mod_cache"
350           >CacheStoreNoStore</directive> yönergesi kullanılmamışsa yanıt
351           "no-store" değerli bir "Cache-Control:" başlığı içeriyorsa yanıt
352           içeriği önbelleğe alınmayacaktır.</li>
353
354         <li>Herşeyle eşleşen "*" değerli bir "Vary:" başlığı içeren bir
355           yanıtın içeriği önbelleğe alınmaz.</li>
356       </ol>
357     </section>
358
359     <section>
360       <title>Neler Önbelleklenmemeli?</title>
361
362       <p>İçerik zamana bağımlıysa ya da istek kısmen bile olsa HTTP uzlaşımıyla
363         bağdaşmıyorsa önbelleğe alınmamalıdır. Bu içerik önbelleklenemeyeceğini
364         <code>Cache-Control</code> başlığını kullanarak sunucuya
365         bildirmelidir.</p>
366
367       <p>İçerik sıkça değişiyorsa, tazelik ömrü dakikalar veya saniyelerle
368         ifade ediliyorsa, içerik yine de önbelleklenebilir. Ancak, tam
369         yanıtların düzenli olarak üretilmemesinin temini için  özgün sunucunun
370         <strong>koşullu istekleri</strong> doğru olarak desteklemesi
371         sağlanmalıdır.</p>
372
373       <p>İstemcinin sağladığı istek başlıklarına dayanarak değişen içerik,
374         <code>Vary</code> yanıt başlığının akıllıca kullanımıyla
375         önbelleklenebilir.</p>
376     </section>
377
378     <section>
379       <title>Değişken/Uzlaşımlı İçerik</title>
380
381       <p>Özgün sunucu, istekteki başlık değerlerine dayanarak farklı
382         içeriklerle yanıt vermeye ayarlandığı takdirde, örneğin aynı URL'de
383         farklı dillerde içerik sunmak gibi, HTTP'nin önbellekleme mekanizması
384         aynı URL'de aynı sayfanın değişik sürümlerini önbelleklemeyi mümkün
385         kılar.</p>
386
387       <p>Bu özgün sunucu tarafından bir <code>Vary</code> başlığı eklenerek
388         yapılır. Bir sayfanın farklı sürümleri arasındaki farkları saptarken
389         önbellek tarafından hangi başlıkların hesaba katılacağını
390         <code>Vary</code> başlığı belirler.</p>
391
392       <p>Örneğin, bir yanıt şöyle bir başlık ile alınmışsa,</p>
393
394       <example>
395         Vary: negotiate,accept-language,accept-charset
396       </example>
397
398       <p><module>mod_cache</module> sadece accept-language ve accept-charset
399         başlıkları özgün istekle eşleşen önbellekli içeriği sunacaktır.</p>
400
401       <p>İçeriğin farklı sürümleri yan yana önbelleklenebilir.
402         <module>mod_cache</module> modülü <code>Vary</code> başlığını
403         kullanarak başlıkta listelenmiş istek başlıklarının uygun değerlerini
404         saptar ve istemciye hangi sürümle yanıt verileceğine karar verir.</p>
405     </section>
406
407     <section id="disk">
408       <title>Disk Üzerinde Önbellekleme</title>
409
410       <p><module>mod_cache</module> modülü önbelleği yönetmek için çeşitli
411       depolama ortamlarına özgü gerçeklenimleri kullanır. Diske önbellekleme
412       desteğini <module>mod_cache_disk</module> sağlar.</p>
413
414       <p>Tipik olarak modül şöyle yapılandırılır:</p>
415
416       <example>
417 CacheRoot   /var/cache/apache/<br />
418 CacheEnable disk /<br />
419 CacheDirLevels 2<br />
420 CacheDirLength 1
421       </example>
422
423       <p>En önemlisi önbelleklenen dosyaların yerel olarak saklanması olup
424         işletim sisteminin sağladığı bellekiçi önbelleklemeden de ayrıca
425         faydalanılmış olur. Bu bakımdan, dosyalar disk üzerinde saklansa bile
426         sıkça erişilen dosyalar işletim sistemi sayesinde aslında bellekten
427         sunulmuş olacaklardır.</p>
428     </section>
429
430     <section>
431       <title>Önbellekte Saklamanın Anlamı</title>
432
433       <p><module>mod_cache_disk</module> öğeleri önbellekte saklamak için
434         istek yapılan URL’nin 22 karakterlik özetini oluşturur. Bu özet, çok
435         sayıda URL’nin aynı özeti oluşturmaması için konak ismi, protokol,
436         port ve varsa CGI argümanlarından başka <code>Vary</code> başlığında
437         tanımlı elemanlardan oluşur.</p>
438
439       <p>Özeti oluşturan karakterler 64 karakterlik bir karakter kümesinden
440         seçildiğinden oluşturulması olası farklı özet sayısı 64^22’dir.
441         Örneğin, bir URL’nin <code>xyTGxSMO2b68mBCykqkp1w</code> gibi bir
442         özeti olabilir. Bu özet, bu URL ile erişilen dosyalar önbellek içinde
443         saklanırken dosya ismi öneki olarak kullanılır. Ancak bununla
444         yetinilmez ve içerik <directive
445         module="mod_cache_disk">CacheDirLevels</directive> ve <directive
446         module="mod_cache_disk">CacheDirLength</directive> yönergelerinin
447         değerlerine göre önce dizinlere ayrılır.</p>
448
449       <p><directive module="mod_cache_disk">CacheDirLevels</directive>
450         yönergesi kaç alt seviye dizin olacağını ve <directive
451         module="mod_cache_disk">CacheDirLength</directive> her dizinde kaç
452         karakter olacağını belirler. Örneğin, yukarıdaki
453         özete sahip bir dosyanın isminin başına yukarıdaki yapılandırma
454         örneğine uygun olarak
455         <code>/var/cache/apache/x/y/TGxSMO2b68mBCykqkp1w</code> gibi bir önek
456         getirilebilirdi.</p>
457
458       <p>Bu tekniğin asıl amacı belli bir dizin içinde bulunabilecek
459         dosyaların ve alt dizinlerin sayısını düşük tutmaktır. Bu sayının
460         büyük olması çoğu işletim sisteminde başarımın düşmesine sebep olur.
461         <directive module="mod_cache_disk">CacheDirLength</directive>
462         yönergesi "1" değeriyle kullanıldığında her dizin altında en fazla 64
463         alt dizin veya dosya açılabilir. "2" değeriyle kullanıldığında ise bu
464         sayı 64^2’ye yükselir ve böyle artarak gider. İyi bir sebebiniz
465         olmadıkça <directive
466         module="mod_cache_disk">CacheDirLength</directive> için değer olarak
467         "1" belirtmenizi öneririz.</p>
468
469       <p><directive module="mod_cache_disk">CacheDirLevels</directive>
470         yönergesine atanacak değer önbellekte saklamayı düşündüğünüz olası
471         dosya sayısı ile ilgilidir. Yukarıdaki örnekte olduğu gibi "2"
472         değerini belirtirseniz, toplamda en fazla 4096 dizin oluşturulabilir.
473         1 milyon dosyanın önbelleklendiği bir durumda bu, her dizinde yaklaşık
474         olarak 245 önbelleklenmiş URL demektir.</p>
475
476       <p>Her URL için önbellekte en az iki dosya saklanır. Biri genellikle URL
477         hakkındaki temel verilerden oluşan ".header" dosyasıdır, diğeri ise
478         sunulacak içeriğin bire bir kopyası olan ".data" dosyasıdır.</p>
479
480       <p>"Vary" başlığı üzerinden içeriğin uzlaşıldığı durumda URL için bir
481         ".vary" dizini oluşturulur. Bu dizin her biri farklı bir uzlaşıma ait
482         çok sayıda ".data" dosyası içerebilir.</p>
483     </section>
484
485     <section>
486       <title>Disk Önbelleğinin Bakımı</title>
487
488       <p><module>mod_cache_disk</module> zaman aşımına uğrayan önbellekli
489         içeriği silse de önbelleğin toplam boyu ve ne kadar boş bellek kaldığı
490         hakkında bilgi vermez.</p>
491
492       <p>Bunun yerine httpd önbellek içeriğini düzenli aralıklarla
493         temizleyebilmeniz için <program>htcacheclean</program> adında bir araç
494         içerir.  Önbellek için azami ne kadar yer kullanılacağının ve bunun
495         üzerinde <program>htcacheclean</program>’i hangi sıklıkta
496         çalıştırılacağının tespiti biraz karmaşık bir işlem olup uygun değerler
497         genellikle deneme yanılma yoluyla bulunur.</p>
498
499       <p><program>htcacheclean</program> iki işlem kipine sahiptir. Kalıcı bir
500         artalan süreci olarak çalışabileceği gibi cron üzerinden belli
501         aralıklarla da çalıştırılabilir. Çok büyük (onlarca GB) önbelleklerde
502         <program>htcacheclean</program>’in işini bitirmesi 1 saatten fazla
503         sürebileceğinden, cron ile çalıştırma durumunda aynı anda birden fazla
504         kopyanın çalışıyor durumda olmaması için
505         <program>htcacheclean</program>’in çalıştırılma aralığını iyi
506         belirlemek gerekir.</p>
507
508       <p>Ayrıca, <program>htcacheclean</program> için uygun bir "nice" seviyesi
509         seçilmesi önerilr. Böylece, sunucu çalışırken aracın ölçüsüz disk g/ç
510         yapmasına sebebiyet verilmemiş olur.</p>
511
512       <p class="figure">
513       <img src="images/caching_fig1.tr.png" alt="" width="600"
514           height="406" /><br />
515       <a id="figure1" name="figure1"><dfn>Şekil 1</dfn></a>:
516  Önbelleğin büyümesi ve düzenli aralıklarla temizlenmesi.</p>
517
518       <p><module>mod_cache_disk</module> ne kadar bellek kullanıldığı hakkında
519         bilgi vermediğinden, <program>htcacheclean</program>'in bir temizliğin
520         ardından yeterli bir büyüme alanı kalacak şekilde yapılandırılması
521         temin edilmelidir.</p>
522     </section>
523
524   </section>
525
526   <section id="socache-caching">
527     <title>İki durumlu Anahtar/Değer Paylaşımlı Nesne Önbellekleme</title>
528
529     <related>
530       <modulelist>
531         <module>mod_authn_socache</module>
532         <module>mod_socache_dbm</module>
533         <module>mod_socache_dc</module>
534         <module>mod_socache_memcache</module>
535         <module>mod_socache_shmcb</module>
536         <module>mod_ssl</module>
537       </modulelist>
538       <directivelist>
539         <directive module="mod_authn_socache">AuthnCacheSOCache</directive>
540         <directive module="mod_ssl">SSLSessionCache</directive>
541         <directive module="mod_ssl">SSLStaplingCache</directive>
542       </directivelist>
543     </related>
544
545     <p>Apache HTTP sunucusu, SSL oturumları, kimlik doğrulama bilgileri gibi
546       önbelleklenebilen özel bilgiler için <a href="socache.html">socache</a>
547       arayüzü içinde düşük seviyeli bir paylaşımlı nesne önbelleğine
548       sahiptir.</p>
549
550     <p>Her gerçeklenime uygun ek modüller de sağlanmıştır:</p>
551
552     <dl>
553     <dt><module>mod_socache_dbm</module></dt>
554     <dd>DBM tabanlı paylaşımlı nesne önbelleklemesi.</dd>
555     <dt><module>mod_socache_dc</module></dt>
556     <dd>Distcache tabanlı paylaşımlı nesne önbelleklemesi.</dd>
557     <dt><module>mod_socache_memcache</module></dt>
558     <dd>Memcache tabanlı paylaşımlı nesne önbelleklemesi.</dd>
559     <dt><module>mod_socache_shmcb</module></dt>
560     <dd>Paylaşımlı belleğe dayalı paylaşımlı nesne önbelleklemesi.</dd>
561     </dl>
562
563     <section id="mod_authn_socache-caching">
564       <title>Kimlik Doğrulama Bilgilerinin Önbelleklenmesi</title>
565
566       <related>
567         <modulelist>
568           <module>mod_authn_socache</module>
569         </modulelist>
570         <directivelist>
571           <directive module="mod_authn_socache">AuthnCacheSOCache</directive>
572         </directivelist>
573       </related>
574
575       <p><module>mod_authn_socache</module> modülü kimlik doğrulama araçlarının
576         yükünün hafifletilmesini, kimlik doğrulama sonucunun önbelleklenmesini
577         sağlar.</p>
578     </section>
579
580     <section id="mod_ssl-caching">
581       <title>SSL Oturumlarının Önbelleklenmesi</title>
582
583       <related>
584         <modulelist>
585           <module>mod_ssl</module>
586         </modulelist>
587         <directivelist>
588           <directive module="mod_ssl">SSLSessionCache</directive>
589           <directive module="mod_ssl">SSLStaplingCache</directive>
590         </directivelist>
591       </related>
592
593       <p><module>mod_ssl</module> modülü, oturum önbelleği ve önbellek
594        zımbalaması sağlamak için <code>socache</code> arayüzünü kullanır.</p>
595     </section>
596   </section>
597
598   <section id="file-caching">
599     <title>Uzmanlaşmış Dosya Önbellekleme</title>
600
601      <related>
602       <modulelist>
603         <module>mod_file_cache</module>
604       </modulelist>
605       <directivelist>
606         <directive module="mod_file_cache">CacheFile</directive>
607         <directive module="mod_file_cache">MMapFile</directive>
608       </directivelist>
609     </related>
610
611     <p>Dosya sisteminin yavaş olabildiği veya dosya tanıtıcılarının
612       kullanımının pahalıya mal olduğu sistemlerde, sunucunun başlatılması
613       sırasında dosyaların belleğe yüklenmesi seçeneği vardır.</p>
614
615     <p>Dosyaların açılmasının yavaş olduğu sistemlerde, dosyaların sunucunun
616       başlatılması sırasında açılması ve dosya tanıtıcısını önbelleklenmesi
617       seçeneği vardır. Bu seçeneklerin duruk dosyalara erişimin yavaş olduğu
618       sistemlere de bir yardımı olabilir.</p>
619
620     <section id="filehandle">
621       <title>Dosya Tanıtıcı Önbelleklemesi</title>
622
623       <p>Bir dosyanın açılması işlemi, özellikle de ağ dosya sistemlerinde
624         bulunan dosyalar için önemli bir gecikme kaynağı olabilir. Önbellekte,
625         çok sunulan dosyaların kendilerinin değil, açık dosya tanıtıcılarının
626         saklanması httpd’yi bu tür gecikmelerden koruyabilir. httpd’de tek
627         türde dosya tanıtıcı önbelleklemesi yapılabilmektedir.</p>
628
629       <section>
630         <title><code>CacheFile</code> yönergesi ile</title>
631
632         <p>httpd’de mevcut önbelleklemenin en temel şekli
633           <module>mod_file_cache</module> tarafından sağlanan dosya tanıtıcı
634           önbelleklemesidir. Bu önbellek türü dosyaların kendilerini değil açık
635           dosya tanıtıcılarının bir listesini saklar. Dosyaların bu anlamda
636           önbelleklenmesi, <directive module="mod_file_cache"
637           >CacheFile</directive> yönergesi yapılandırma dosyasında belirtilerek
638           sağlanabilir.</p>
639
640         <p><directive module="mod_file_cache">CacheFile</directive> yönergesi
641           belirtilen dosyanın httpd başlatıldığında açılmasını ve dosya için
642           yapılan sonraki her istekte bu dosya tanıtıcısının kullanılmasını
643           sağlar.</p>
644
645         <example>
646           CacheFile /usr/local/apache2/htdocs/index.html
647         </example>
648
649         <p>Büyük miktarda dosyayı bu anlamda önbelleklemeyi tasarlıyorsanız
650           işletim sisteminizin açık dosya tanıtıcılarının sayısı ile ilgili
651           sınırlamasını uygun bir değere ayarlamanız gerekebilir.</p>
652
653         <p><directive module="mod_file_cache">CacheFile</directive> yönergesini
654           kullandığınız takdirde dosya içeriğindeki değişiklikleri anında
655           isteğe yansıtamazsınız. httpd dosyayı ilk başlatıldığındaki haliyle
656           sunar.</p>
657
658         <p>Eğer httpd çalışırken dosya silinmişse httpd ilk başlatıldığındaki
659           haline ilişkin dosya tanıtıcıyı sağlamaya ve dolayısıyla dosya
660           içeriğini sunmaya devam edecektir. Yani, dosya silinmiş ve artık
661           dosya sisteminde görünmüyor olsa bile httpd durdurulup dosya
662           tanıtıcıları kapanmadıkça dosyaların silinmesiyle açılan yer serbest
663           kalmayacaktır.</p>
664       </section>
665
666     </section>
667
668     <section id="inmemory">
669       <title>Sistem Belleğinde Önbellekleme</title>
670
671       <p>İçeriğin sistem belleğinden sunulması içerik sunmanın evrensel olarak
672       en hızlı yoludur. Dosyaların bir disk denetleyiciden okunması ya da daha
673       kötüsü uzak bir ağdan okunması bellekten okumayla karşılaştırılamayacak
674       ölçüde yavaş işlemlerdir. Disk denetleyiciler genellikle fiziksel
675       süreçleri denetlerler. Ağ erişimi ise band genişliği sınırlamalarından
676       etkilenir. Halbuki bellek erişimi sadece nano saniyeler mertebesinde
677       gerçekleşir.</p>
678
679       <p>Sistem belleği en pahalı saklama ortamı olması sebebiyle en verimli
680       şekilde kullanımı önemlidir. Dosyaları sistem belleğinde saklamakla
681       sistemin kullanabileceği bellek miktarını azaltmış olursunuz. İşletim
682       sistemi önbelleklemesinde göreceğiniz gibi bu öyle basit bir konu
683       değildir. httpd’nin kendi kullandığı belleğin bir kısmını önbellek
684       olarak ayırırken çok fazla bellek kullanmamak önemlidir. Aksi takdirde
685       işletim sistemi belleğin yetmediği noktada belleği diske
686       takaslayacağından istenen başarım artışı sağlanamayacaktır.</p>
687
688       <section>
689         <title>İşletim Sistemi Önbelleklemesi</title>
690
691         <p>Günümüz iştetim sistemlerinin hemen hemen tamamında bellek içi
692         dosya/veri saklama işlemlerini çekirdek yönetir. Bu güçlü bir
693         özelliktir ve işletim sistemlerinin büyük çoğunluğu bunu böyle yapar.
694         Örneğin, Linux’ta bir dosyanın ilk defa okunduğunda ve ikinci kez
695         okunduğunda işlemcinin ne kadar meşgul edildiğine bakalım:</p>
696
697         <example>
698           colm@coroebus:~$ time cat testfile &gt; /dev/null<br />
699           real    0m0.065s<br />
700           user    0m0.000s<br />
701           sys     0m0.001s<br />
702           colm@coroebus:~$ time cat testfile &gt; /dev/null<br />
703           real    0m0.003s<br />
704           user    0m0.003s<br />
705           sys     0m0.000s
706         </example>
707
708         <p>Küçük bir dosya için bile okuma süresi bakımından büyük fark ortaya
709           çıkmaktadır. Bunun sebebi çekirdeğin dosya içeriğini bellek daha
710           güncel amaçlar için lazım olana dek bellek içinde saklamasıdır.</p>
711
712         <p>Sisteminizde yeterince yedek bellek olduğundan eminseniz, bu
713           önbellekte daha fazla dosya saklanacağından emin olabilirsiniz.
714           Bundan, önbelleğin sistem belleğinde verimli biçimde tutulması için
715           httpd’de ek bir yapılandırmaya gidilmesinin gerekmediği sonucu
716           çıkarılabilir.</p>
717
718         <p>Bundan başka, işletim sistemi dosyaların değiştiği ve silindiği
719           zamanları bildiğinden bu tür dosyaların içerikleri gerektiğinde
720           önbellekten kendiliğinden silinmiş olur. Bellek içinde dosya
721           saklarken dosyaların değiştirilme zamanlarını bilme olanağı
722           olmadığından bu durum httpd’ye büyük yarar sağlar.</p>
723       </section>
724
725       <p>İşletim sisteminin dosyaların önbelleklenmesi için sağladığı bunca
726         yarara ve başarım artışına karşın bellek içinde dosya önbelleklemenin
727         httpd tarafından yerine getirilmesinin daha iyi olacağı bazı durumlar
728         vardır.</p>
729
730       <section>
731         <title><code>MMapFile</code> yönergesi ile</title>
732
733         <p><module>mod_file_cache</module> modülü, bir durağan dosyanın
734           içeriğini sunucunun başlatılması sırasında (mmap sistem çağrısıyla)
735           belleğe eşlenmesini mümkün kılmak için <directive
736           module="mod_file_cache" >MMapFile</directive> yönergesini sağlar.
737           httpd bu dosyaya gelecek sonraki istekler için dosyanın bellekiçi
738           içeriğini kullanacaktır.</p>
739
740         <example>
741           MMapFile /usr/local/apache2/htdocs/index.html
742         </example>
743
744         <p><directive module="mod_file_cache">CacheFile</directive>
745           yönergesinde olduğu gibi bu dosyalarda httpd başlatıldıktan sonra
746           yapılacak bir değişiklikten httpd’nin haberi olmayacaktır.</p>
747
748         <p><directive module="mod_file_cache">MMapFile</directive> yönergesi
749           ayırdığı belleğin toplam miktarı ile ilgilenmez, dolayısıyla
750           yönergenin aşırı kullanımından kaçınmalısınız. httpd’nin çocuk
751           süreçlerinin her biri bu belleğin kendilerine ait birer kopyasını
752           yapacağından belleğe eşlenen dosyaların çok yer kaplamaması büyük
753           önem taşımaktadır; aksi takdirde işletim sistemi belleği diske
754           takaslayacağından beklenen fayda sağlanamayacaktır.</p>
755       </section>
756     </section>
757   </section>
758
759   <section id="security">
760     <title>Güvenlik Kaygıları</title>
761
762     <section>
763       <title>Erişim Denetimi ve Yetkilendirme</title>
764
765       <p><directive module="mod_cache">CacheQuickHandler</directive>
766         yönergesine <code>On</code> değerinin atandığı öntanımlı durumda
767         <module>mod_cache</module> kullanımı, daha çok sunucunun önüne
768         vidalanmış önbelleklemeli bir karşı vekile sahip olmak gibidir. Özgün
769         sunucunun bir harici önbellekmiş gibi sorgulanmasını gerektirmeyen tüm
770         istekler önbellekleme modülü tarafından karşılanacaktır. Bu durum
771         httpd'nin güvenlik modelini büyük ölçüde değiştirir.</p>
772
773       <p>Olası <code>.htaccess</code> dosyalarının dosya sisteminin tamamında
774         taranması çok pahalı bir işlem olduğundan <module>mod_cache</module>,
775         (işlemi hızlandırmak için) önbelleğe almanın temel amacını kısmen
776         gözardı ederek, önbellekteki içeriğin sunumu için gerekli
777         yetkilendirmenin olup olmadığı konusunda bir karar üretmez. Başka bir
778         deyişle, eğer <module>mod_cache</module> bir kısım içeriği önbelleğe
779         almışsa içerik zaman aşımına uğramadığı sürece bu içerik önbellekten
780         sunulacaktır.</p>
781
782       <p>Örneğin, yapılandırmanız bir özkaynağa IP adresine göre erişime izin
783         veriyorsa bu içeriğin önbelleğe alınmayacağından emin olmalısınız.
784         Bunu <directive module="mod_cache">CacheDisable</directive>
785         yönergesini veya <module>mod_expires</module> modülünü kullanarak
786         yapabilirsiniz. Bunu yapmaz, olayı kendi haline bırakırsanız
787         <module>mod_cache</module> bir karşı vekil gibi çalışarak sunulan her
788         içeriği önbelleğe alacak ve hangi IP adresinden gelirse gelsin her
789         istemciye bunu sunacaktır.</p>
790
791       <p><directive module="mod_cache">CacheQuickHandler</directive>
792         yönergesine <code>Off</code> atandığı takdirde, istek işleme
793         aşamalarının tamamı yerine getirilir ve güvenlik modeli değişmeden
794         kalır.</p>
795     </section>
796
797     <section>
798       <title>Yerel İstismarcılar</title>
799
800       <p>Son kullanıcılarıın isteklerine önbellekten hizmet sunulduğundan
801         önbelleğin kendisi içerikle etkileşime geçmek isteyenlerin veya
802         içeriği tahrif etmek isteyenlerin hedefi haline gelebilir. httpd’yi
803         çalıştıran kullanıcı tarafından her zaman önbelleğe yazılabileceğini
804         akıldan çıkarmamak önemlidir. Bu durumda alışılmışın tersine tüm
805         içeriğin Apache kullanıcısı tarafından yazılamamasının sağlanması
806         önerilir.</p>
807
808       <p>Eğer Apache kullanıcısı, örneğin bir CGI sürecindeki açık nedeniyle
809         tehlikeye atılırsa, önbellek hedef alınabilir.
810         <module>mod_cache_disk</module> kullanılırken önbellekteki bir öğeyi
811         değiştirmek veya önbelleğe yeni bir öğe eklemek görece daha
812         kolaydır.</p>
813
814       <p>Bu risk, Apache kullanıcısını kullanan diğer saldırı türleriyle
815         karşılaştırıldığında daha yüksektir. <module>mod_cache_disk</module>
816         kullanıyorsanız şunları aklınızdan çıkarmayın: (1) httpd güvenlik
817         güncellemelerini takip edin ve sunucunuzu buna göre güncelleyin. (2)
818         Mümkünse <a href="suexec.html">suEXEC</a> kullanarak CGI süreçlerini
819         Apache kullanıcısı olmayan bir kullanıcının aidiyetinde çalıştırın.</p>
820     </section>
821
822     <section>
823       <title>Önbellek Zehirlenmeleri</title>
824
825       <p>httpd bir önbellekli vekil sunucu olarak çalıştığında önbellek
826         zehirlenmesi adı verilen sorunla karşılaşılma olasılığı vardır.
827         Önbellek zehirlenmesi, vekil sunucunun özgün sunucudan yanlış (ve
828         genellikle istenmeyen) içerik almasına sebep olan bir saldırı türünü
829         betimlemek için yaygın olarak kullanılan bir terimdir.</p>
830
831       <p>Örneğin httpd’nin çalıştığı sistemin kullandığı DNS sunucuları DNS
832         önbellek zehirlenmesinden etkilenebilecek durumdaysa, bir saldırgan
833         httpd’nin istekleri almak için başvuracağı kaynak sunucunun yerini
834         değiştirebilir. Diğer bir örnek, HTTP istek kaçakçılığı adı verilen
835         bir saldırı türüdür.</p>
836
837       <p>Bu belge HTTP istek kaçakçılığını derinliğine incelenmesi için uygun
838         yer değildir (böyle kaynaklara arama motorunuzla erişebilirsiniz).
839         Bununla birlikte, vekil tarafından kaynak sunucudan alınan içeriği
840         tamamen denetim altına almak amacıyla kaynak sunucudaki bir açığı
841         istismar etmeye yönelik bir dizi istek yapılabileceğinin olasılık
842         dahilinde olduğunu bilmenizde yarar vardır.</p>
843     </section>
844
845     <section>
846       <title>Hizmet Reddi / Önbelleğin Engellenmesi</title>
847
848       <p>Vary mekanizması aynı URL'nin çok sayıda sürümünün yan yana
849         önbelleklenmesini mümkün kılar. İstemci tarafından sağlanan başlık
850         değerlerine bağlı olarak, önbellek istemciye gönderilecek doğru yanıtı
851         bulacaktır. Normal kullanımda olası değerlerin çok geniş olduğunun
852         bilindiği durumda bir başlığı (örn, <code>User-Agent</code>)
853         değişikliğe uğratma çabası bu mekanizmayı bir sorun haline getirebilir.
854         Sitenin tanınırlığına bağlı olarak aynı URL'nin binlerce hatta
855         milyonlarca önbellek girdisi oluşabilir ve bunlar önbellekteki diğer
856         girdilerin yerini alabilir.</p>
857
858       <p>Diğer yandan, belli bir özkaynağın URL'sinin her istekte
859       değiştirilmesi ihtiyacı ortaya çıkabilir. Bu normalde URL dizgesine bir
860       "cachebuster" dizgesi eklenerek yapılır. Bu içerik sunucu tarafından
861       anlamlı bir tazelik ömrüyle önbelleklenebilir olarak imlenmişse bu
862       girdiler kısa zamanda önbellekteki meşru girdilerin yerini alabilir.
863       <module>mod_cache</module> modülü bunun önlenmesi için <directive
864       module="mod_cache">CacheIgnoreURLSessionIdentifiers</directive>
865       yönergesine sahipse de bu yönerge, yoldaki vekillerin veya tarayıcı
866       önbelleklerinin aynı hizmet reddi saldırısına maruz kalmamaları için
867       dikkatle kullanılmalıdır.</p>
868     </section>
869   </section>
870
871 </manualpage>