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