| <?xml version="1.0" encoding="UTF-8"?> |
| <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> |
| <html xmlns="http://www.w3.org/1999/xhtml" lang="tr" xml:lang="tr"><head><!-- |
| XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX |
| This file is generated from xml source: DO NOT EDIT |
| XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX |
| --> |
| <title>Önbellek Kullanım Kılavuzu - Apache HTTP Sunucusu</title> |
| <link href="./style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" /> |
| <link href="./style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" /> |
| <link href="./style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /> |
| <link href="./images/favicon.ico" rel="shortcut icon" /></head> |
| <body id="manual-page"><div id="page-header"> |
| <p class="menu"><a href="./mod/">Modüller</a> | <a href="./mod/directives.html">Yönergeler</a> | <a href="./faq/">SSS</a> | <a href="./glossary.html">Terimler</a> | <a href="./sitemap.html">Site Haritası</a></p> |
| <p class="apache">Apache HTTP Sunucusu Sürüm 2.3</p> |
| <img alt="" src="./images/feather.gif" /></div> |
| <div class="up"><a href="./"><img title="<-" alt="<-" src="./images/left.gif" /></a></div> |
| <div id="path"> |
| <a href="http://www.apache.org/">Apache</a> > <a href="http://httpd.apache.org/">HTTP Sunucusu</a> > <a href="http://httpd.apache.org/docs/">Belgeleme</a> > <a href="./">Sürüm 2.3</a></div><div id="page-content"><div id="preamble"><h1>Önbellek Kullanım Kılavuzu</h1> |
| <div class="toplang"> |
| <p><span>Mevcut Diller: </span><a href="./en/caching.html" hreflang="en" rel="alternate" title="English"> en </a> | |
| <a href="./fr/caching.html" hreflang="fr" rel="alternate" title="Français"> fr </a> | |
| <a href="./tr/caching.html" title="Türkçe"> tr </a></p> |
| </div> |
| |
| <p>Bu belge <code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code>, |
| <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> |
| modülleri ve <a href="programs/htcacheclean.html">htcacheclean</a> |
| için bir başvuru kılavuzu niteliğindedir. HTTP sunucusu ve vekil |
| olarak çalışmada işlemleri hızlandırmak için bilinen sorunlar ve |
| yanlış yapılandırmalardan kaçınarak Apache HTTPD sunucusunun önbellekleme |
| özelliklerinin nasıl kullanılacağı açıklanmıştır.</p> |
| </div> |
| <div id="quickview"><ul id="toc"><li><img alt="" src="./images/down.gif" /> <a href="#introduction">Giriş</a></li> |
| <li><img alt="" src="./images/down.gif" /> <a href="#overview">Önbelleklemeye Bir Bakış</a></li> |
| <li><img alt="" src="./images/down.gif" /> <a href="#security">Güvenlik Kaygıları</a></li> |
| <li><img alt="" src="./images/down.gif" /> <a href="#filehandle">Dosya Tanıtıcı Önbelleklemesi</a></li> |
| <li><img alt="" src="./images/down.gif" /> <a href="#inmemory">Sistem Belleğinde Önbellekleme</a></li> |
| <li><img alt="" src="./images/down.gif" /> <a href="#disk">Disk Üzerinde Önbellekleme</a></li> |
| </ul></div> |
| <div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div> |
| <div class="section"> |
| <h2><a name="introduction" id="introduction">Giriş</a></h2> |
| |
| |
| <p>Apache HTTP sunucusunun 2.2 sürümünden itibaren |
| <code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code> ve <code class="module"><a href="./mod/mod_file_cache.html">mod_file_cache</a></code> modülleri |
| deneysel olmaktan çıkarılmış ve üretim amaçlı kullanılabileceğine karar |
| verilmiştir. Bu önbellekleme mimarileri gerek HTTP sunucusu gerekse |
| vekili olarak çalışmada HTTP işlemlerini hızlandırmak anlamında sunucuya |
| güç katarlar.</p> |
| |
| <p><code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code>, ortam sağlayıcı modülü olan |
| <code class="module"><a href="./mod/mod_cache_disk.html">mod_cache_disk</a></code> ile birlikte HTTP önbelleklemesini |
| akıllıca yerine getirir. İçeriğin kendisi önbellekte saklanırken |
| <code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code> içeriğin önbelleklenebilmesini denetim |
| altında tutan HTTP başlıkları ve seçenekleri ile ilgilenir. Yerel ve |
| vekalet edilen içeriğin her ikisinin de aynı anda işlem görmesi |
| sağlanabilir. <code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code>, vekalet edilen içeriğe, |
| devingen yerel içeriğe veya zamanla değişen yerel dosyalara erişimi |
| hızlandırma ihtiyacına yönelik olarak hem basit hem de karmaşık |
| önbellekleme yapılandırmalarını mümkün kılar.</p> |
| |
| <p><code class="module"><a href="./mod/mod_file_cache.html">mod_file_cache</a></code> ise biraz daha temel ancak bazen daha |
| kullanışlı olabilen bir önbellekleme şekli ile ilgilenir. URL’lerin |
| önbelleklenebilmesini mümkün kılmanın karmaşıklığıyla boğuşmak yerine |
| <code class="module"><a href="./mod/mod_file_cache.html">mod_file_cache</a></code>, dosyaların httpd’nin son başlatıldığı |
| zamanki durumlarını saklamak için dosyaların belleğe eşlenmek üzere ele |
| alınmasını sağlar. Böylelikle, <code class="module"><a href="./mod/mod_file_cache.html">mod_file_cache</a></code>, çok sık |
| değişmeyen durağan yerel dosyalara erişim zamanını azaltmaya yardım |
| eder.</p> |
| |
| <p><code class="directive"><a href="./mod/mod_file_cache.html#cachefile">CacheFile</a></code> ve |
| <code class="directive"><a href="./mod/mod_file_cache.html#mmapfile">MMapFile</a></code> yönergeleri ile |
| ilgili bölümlerde anlatılanları saymazsak |
| <code class="module"><a href="./mod/mod_file_cache.html">mod_file_cache</a></code>, bu belgenin asıl konusu olan |
| <code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code> önbellekleme mimarisine göre daha basit bir |
| önbellekleme gerçeklenimidir.</p> |
| |
| <p>Bu belgeden azami yararı sağlayabilmek için temel bir HTTP bilginizin |
| olması ve <a href="urlmapping.html">URL’lerin Dosya Sistemine |
| Eşlenmesi</a> ile <a href="content-negotiation.html">İçerik Uzlaşımı</a> |
| belgelerini okumuş olmanız gerekir.</p> |
| |
| </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div> |
| <div class="section"> |
| <h2><a name="overview" id="overview">Önbelleklemeye Bir Bakış</a></h2> |
| |
| |
| |
| <table class="related"><tr><th>İlgili Modüller</th><th>İlgili Yönergeler</th></tr><tr><td><ul><li><code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code></li><li><code class="module"><a href="./mod/mod_cache_disk.html">mod_cache_disk</a></code></li><li><code class="module"><a href="./mod/mod_file_cache.html">mod_file_cache</a></code></li></ul></td><td><ul><li><code class="directive"><a href="./mod/mod_cache.html#cacheenable">CacheEnable</a></code></li><li><code class="directive"><a href="./mod/mod_cache.html#cachedisable">CacheDisable</a></code></li><li><code class="directive"><a href="./mod/mod_file_cache.html#cachefile">CacheFile</a></code></li><li><code class="directive"><a href="./mod/mod_file_cache.html#mmapfile">MMapFile</a></code></li><li><code class="directive"><a href="./mod/core.html#usecanonicalname">UseCanonicalName</a></code></li><li><code class="directive"><a href="./mod/mod_negotiation.html#cachenegotiateddocs">CacheNegotiatedDocs</a></code></li></ul></td></tr></table> |
| |
| <p>Bir istek sonuçlanıncaya kadar <code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code> modülünde iki |
| aşamadan geçer. İlkinde <code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code> bir URL eşleme modülü |
| olarak çalışır ve URL önbellekteyse ve zaman aşımına uğramamışsa isteğin |
| doğrudan <code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code> tarafından sunulmasını sağlar.</p> |
| |
| <p>Yani isteğin sunumu sırasında, isteğin örneğin, |
| <code class="module"><a href="./mod/mod_proxy.html">mod_proxy</a></code> veya <code class="module"><a href="./mod/mod_rewrite.html">mod_rewrite</a></code> tarafından |
| ele alınması gerekse bile bu yapılmaz. Önbelleklenen içerik ilk alındığı |
| haliyle sunulur.</p> |
| |
| <p>Eğer URL önbellekte yoksa, <code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code> isteği bir <a href="filter.html">süzgece</a> tabi tutar. httpd içeriğin varlığını |
| saptamışsa içeriğin süzgeç tarafından sunulmasını sağladıktan sonra, |
| süzgeç içeriğin önbelleklenebileceğini saptamışsa gelecekte sunmak üzere |
| içeriği önbelleğe kaydeder.</p> |
| |
| <p>Eğer URL önbellekte bulunmuş fakat içeriğin zaman aşımına uğradığı |
| anlaşılmışsa süzgeç yine de eklenir fakat bu kez |
| <code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code> önbellekteki sürümün hala geçerli olup |
| olmadığını saptamak için kaynağın bulunduğu sunucuya bir koşullu istek |
| gönderir. Önbellekteki sürüm hala geçerliyse temel verileri güncellenir |
| ve istek önbellekten sunulur. Önbellekteki sürüm artık geçerli değilse, |
| önbellekteki sürüm silinir ve süzgeç güncel içeriği önbelleğe kaydeder |
| ve isteği oradan sunar.</p> |
| |
| <h3>Önbelleğin Hızlandırılması</h3> |
| |
| |
| <p>Yerel içerik önbelleklendiği takdirde <code class="directive"><a href="./mod/core.html#usecanonicalname">UseCanonicalName</a></code> yönergesine <code>On</code> |
| değeri atanmışsa önbellekten sunulan sayfa sayısında büyük bir artış |
| olduduğu görülür. Bunun sebebi içeriği sunan sanal konağın isminin |
| önbellek anahtarının bir parçası olarak kullanılmasıdır. Yönergeye |
| <code>On</code> değerini atamak suretiyle çok isimli ve rumuzlu sanal |
| konaklar için farklı önbellek girdileri oluşturulmaz, bunun yerine her |
| meşru sanal konak için ayrı bir önbellek tutulur.</p> |
| |
| <p>Önbellekleme, URL’nin dosya ismine dönüştürülmesi aşamasında |
| gerçekleştiğinden önbelleklenen belgeler sadece URL isteklerine bir |
| yanıt olarak sunulurlar. <a href="howto/ssi.html">Sunucu Taraflı |
| İçerikleri</a> kullanmazsanız genellikle bunun fazla bir önemi |
| olmaz.</p> |
| |
| <div class="example"><p><code> |
| <!-- Bu içerik önbelleklenebilir. --><br /> |
| <!--#include virtual="/dipnot.html" --><br /> |
| <br /> |
| <!-- Bu içerik önbelleklenemez. --><br /> |
| <!--#include file="/bir/yol/dipnot.html" --> |
| </code></p></div> |
| |
| <p>Sunucu Taraflı İçerikleri kullanıyorsanız ve önbelleklemenin |
| sağladığı hız artışından da yaralanmak istiyorsanız içerik |
| yerleştirmek için <code>virtual</code> içerik türünü kullanınız.</p> |
| |
| |
| <h3>Zaman Aşımı Süreleri</h3> |
| |
| |
| <p>Önbellekli öğeler için öntanımlı zaman aşımı süresi bir saat olmakla |
| birlikte <code class="directive"><a href="./mod/mod_cache.html#cachedefaultexpire">CacheDefaultExpire</a></code> |
| yönergesi kullanılarak bu değer kolaylıkla geçersiz kılınabilir. Bu |
| öntanımlı değer sadece içeriğin özgün kaynağı bir zaman aşımı süresi |
| veya son değişiklik tarihi belirtmediği takdirde kullanılır.</p> |
| |
| <p>Bir yanıt <code>Expires</code> başlığını değil de |
| <code>Last-Modified</code> başlığını içeriyorsa |
| <code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code> zaman aşımı süresini <code class="directive"><a href="./mod/mod_cache.html#cachelastmodifiedfactor">CacheLastModifiedFactor</a></code> yönergesinin |
| nasıl kullanıldığına bakarak saptar.</p> |
| |
| <p>Yerel içerik için, zaman aşımı süresini hassas olarak ayarlamak |
| gerekirse <code class="module"><a href="./mod/mod_expires.html">mod_expires</a></code> kullanılabilir.</p> |
| |
| <p>Zaman aşımı süresinin üst sınırı <code class="directive"><a href="./mod/mod_cache.html#cachemaxexpire">CacheMaxExpire</a></code> yönergesi ile |
| belirlenebilir.</p> |
| |
| |
| |
| <h3>Şartlı İstekler için Özlü Kılavuz</h3> |
| |
| |
| <p>Önbellekteki içerik zaman aşımına uğrayıp, içerik sağlayıcıya veya |
| arka sunucuya özgün isteği aktarmak yerine ayrı bir istek yapılması |
| gereği httpd’nin şartlı bir istek yapması sonucunu doğurur.</p> |
| |
| <p>Bir istemcinin veya önbelleğin aynı içeriğin farklı sürümleri |
| arasında ayrım yapabilmesi için HTTP protokolü bazı başlık alanları |
| önerir. Örneğin, "Etag:" başlığıyla sunulan bir özkaynak için |
| "If-None-Match:" başlığıyla bir şartlı istek yapmak mümkün olduğu gibi |
| özkaynak "Last-Modified:" başlığıyla sunuluyorsa şartlı istek |
| "If-Modified-Since:" başlığıyla yapılabilir, vesaire.</p> |
| |
| <p>Böyle bir şartlı istek yapıldığında yanıt koşulun içerikle eşleşip |
| eşleşmediğine bağlı olarak farklı olur. Eğer istek bir |
| "If-Modified-Since:" başlığıyla yapılmışsa ve içerik istekte |
| belirtilen zamandan önce değiştirilmemişse kısa ve öz olarak bir "304 |
| Not Modified" (Bir değişiklik yok) iletisiyle yanıt verilir.</p> |
| |
| <p>Aksi takdirde bir şartlı istek yapılmamış gibi içeriğin kendisi |
| sunulur.</p> |
| |
| <p>Önbellekleme ile ilgili şartlı istekler çifte yarar sağlar. Birinci |
| olarak, böyle bir istek arkadaki sunucuya yapılıyorsa ve iki içerik de |
| aynıysa bunu saptamak kolay olur ve özkaynağın tamamını aktarma |
| külfetinden kurtulunur.</p> |
| |
| <p>İkinci olarak, şartlı istekler arka sunucuda normalden daha az |
| faaliyete sebep olur. Durağan dosyalar için bu genellikle |
| <code>stat()</code> veya benzeri bir sistem çağrısıyla dosya |
| boyutları ve değişiklik zamanına bakmak şeklinde gerçekleşir. |
| Böylelikle httpd yerel içeriği önbellekliyor olsa bile ve hatta |
| içerik zaman aşımına da uğrasa önbellekteki dosyada bir değişiklik |
| olmadığı takdirde içeriği önbellekten sunmak daha hızlı olacaktır. |
| Çünkü dosyayı önbellekten okumak, arka sunucudan okumaktan daha |
| hızlıdır (bu, bellekten okumayla diskten okumayı karşılaştırmak |
| gibidir).</p> |
| |
| |
| <h3>Neler Önbelleklenebilir?</h3> |
| |
| |
| <p>Evvelce bahsedildiği gibi httpd’de iki tür önbellekleme yapılır ve |
| bunlar farklı yöntemlerle çalışır. <code class="module"><a href="./mod/mod_file_cache.html">mod_file_cache</a></code> |
| önbelleklemesinde dosyalar httpd başlatıldığı zamanki içerikle |
| saklanır. Bu modül tarafından önbelleğe alınmış bir dosya için istek |
| geldiğinde isteğin yolu kesilip önbellekteki dosya sunulur.</p> |
| |
| <p><code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code> önbelleklemesinde işler biraz daha |
| karışıktır. Bir isteğe hizmet sunulurken istenen içerik evvelce |
| önbelleklenmemişse önbellekleme modülü önce içeriğin |
| önbelleklenebilirliğine bakar. Bir yanıtın önbelleklenebilirliğini |
| belirleyen koşullar şunlardır:</p> |
| |
| <ol> |
| <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> |
| |
| <li>Yanıtın HTTP durum kodu 200, 203, 300, 301 veya 410 olmalıdır.</li> |
| |
| <li>İstek bir HTTP GET isteği olmalıdır.</li> |
| |
| <li>İstek bir "Authorization:" başlığı içeriyorsa yanıt önbelleğe |
| alınmayacaktır.</li> |
| |
| <li>Eğer yanıt bir "Authorization:" başlığı içeriyorsa ayrıca |
| "Cache-Control:" başlığında da "s-maxage", "must-revalidate" veya |
| "public" değerlerinden birini içermelidir.</li> |
| |
| <li>Eğer URL (GET yöntemi kullanan bir HTML formunun yaptığı gibi) bir |
| sorgu dizgesi içeriyorsa yanıt, RFC2616’nın 13.9. bölümünde |
| açıklandığı gibi bir "Expires:" başlığı içermedikçe veya |
| "Cache-Control:" başlığının max-age veya max-age yönergesini |
| içermedikçe yanıt içeriği önbelleğe alınmayacaktır.</li> |
| |
| <li><code class="directive"><a href="./mod/mod_cache.html#cacheignorenolastmod">CacheIgnoreNoLastMod</a></code> |
| yönergesinin kullanımını gerektiren bir durum olmadıkça 200 durum |
| koduna sahip bir yanıtın "Etag", "Last-Modified" ve "Expires" |
| başlıklarından birini veya "Cache-Control:" başlığının max-age veya |
| max-age yönergelerinden birini (en azından) içermesi gerekir.</li> |
| |
| <li><code class="directive"><a href="./mod/mod_cache.html#cachestoreprivate">CacheStorePrivate</a></code> |
| yönergesinin kullanımını gerektiren bir durum olmadıkça yanıt |
| "private" değerli bir "Cache-Control:" başlığı içerdiği takdirde |
| yanıtın içeriği önbelleğe alınmayacaktır.</li> |
| |
| <li>Benzer şekilde, <code class="directive"><a href="./mod/mod_cache.html#cachestorenostore">CacheStoreNoStore</a></code> yönergesi kullanılmamışsa yanıt |
| "no-store" değerli bir "Cache-Control:" başlığı içeriyorsa yanıt |
| içeriği önbelleğe alınmayacaktır.</li> |
| |
| <li>Herşeyle eşleşen "*" değerli bir "Vary:" başlığı içeren bir |
| yanıtın içeriği önbelleğe alınmaz.</li> |
| </ol> |
| |
| |
| <h3>Neler Önbelleklenmemeli?</h3> |
| |
| |
| <p>Kısaca, istek zamana aşırı bağımlıysa ya da istek kısmen bile olsa |
| HTTP uzlaşımıyla bağdaşmıyorsa önbelleğe alınmamalıdır.</p> |
| |
| <p>İçeriği istekçinin IP adresine bağlı olarak değişen veya her beş |
| dakikada bir değişikliğe uğrayan bir devingen içeriğe sahipseniz böyle |
| bir içerik asla önbelleğe alınmamalıdır.</p> |
| |
| <p>Diğer taraftan, içerik HTTP başlığındaki değerlere bağlı olarak |
| değişiyorsa içeriğin bir "Vary" başlığı kullanılarak akıllıca |
| önbelleklenmesi imkanı mevcuttur.</p> |
| |
| |
| <h3>Değişken/Uzlaşımlı İçerik</h3> |
| |
| |
| <p>"Vary" başlıklı bir yanıt arka sunucudan istenirken |
| <code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code> tarafından alınmışsa akıllıca ele alınmaya |
| çalışılacaktır. Mümkünse, <code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code> gelecekte bu |
| içerikle ilgili isteklerin "Vary" başlıklı yanıtları olacağını |
| saptayacak ve önbellekten doğru içerikle yanıt verecektir.</p> |
| |
| <p>Örneğin, bir yanıt şöyle bir başlık ile alınmışsa,</p> |
| |
| <div class="example"><p><code> |
| Vary: negotiate,accept-language,accept-charset |
| </code></p></div> |
| |
| <p><code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code> sadece accept-language ve accept-charset |
| başlıkları özgün istekle eşleşen önbellekli içeriği sunacaktır.</p> |
| |
| |
| </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div> |
| <div class="section"> |
| <h2><a name="security" id="security">Güvenlik Kaygıları</a></h2> |
| |
| |
| <h3>Erişim Denetimi ve Yetkilendirme</h3> |
| |
| |
| <p><code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code> çoğunlukla bir karşı vekile sahip olmak |
| amacıyla kullanılır. Arka sunucunun sorgulanmasını gerektirmeyen tüm |
| istekler önbellekleme modülü tarafından karşılanacaktır. Yerel |
| özkaynakların önbelleklenmesi söz konusu olduğunda httpd’nin güvenlik |
| modeli büyükçe bir değişikliğe uğrar.</p> |
| |
| <p>Olası <code>.htaccess</code> dosyalarının dosya sisteminin tamamında |
| taranması çok pahalı bir işlem olduğundan <code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code>, |
| (işlemi hızlandırmak için) önbelleğe almanın temel amacını kısmen |
| gözardı ederek, önbellekteki içeriğin sunumu için gerekli |
| yetkilendirmenin olup olmadığı konusunda bir karar üretmez. Başka bir |
| 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 |
| almışsa içerik zaman aşımına uğramadığı sürece bu içerik önbellekten |
| sunulacaktır.</p> |
| |
| <p>Örneğin, yapılandırmanız bir özkaynağa IP adresine göre erişime izin |
| veriyorsa bu içeriğin önbelleğe alınmayacağından emin olmalısınız. |
| Bunu <code class="directive"><a href="./mod/mod_cache.html#cachedisable">CacheDisable</a></code> |
| yönergesini veya <code class="module"><a href="./mod/mod_expires.html">mod_expires</a></code> kullanarak |
| yapabilirsiniz. Bunu yapmaz, olayı kendi haline bırakırsanız |
| <code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code> bir karşı vekil gibi çalışarak sunulan her |
| içeriği arabelleğe alacak ve hangi IP adresinden gelirse gelsin her |
| istemciye bunu sunacaktır.</p> |
| |
| |
| <h3>Yerel İstismarcılar</h3> |
| |
| |
| <p>Son kullanıcılarıın isteklerine önbellekten hizmet sunulduğundan |
| önbelleğin kendisi içerikle etkileşime geçmek isteyenlerin veya |
| içeriği tahrif etmek isteyenlerin hedefi haline gelebilir. httpd’yi |
| çalıştıran kullanıcı tarafından her zaman önbelleğe yazılabileceğini |
| akıldan çıkarmamak önemlidir. Bu durumda alışılmışın tersine tüm |
| içeriğin Apache kullanıcısı tarafından yazılamamasının sağlanması |
| önerilir.</p> |
| |
| <p>Eğer Apache kullanıcısı, örneğin bir CGI sürecindeki açık nedeniyle |
| tehlikeye atılırsa, önbellek hedef alınabilir. |
| <code class="module"><a href="./mod/mod_cache_disk.html">mod_cache_disk</a></code> kullanılırken önbellekteki bir öğeyi |
| değiştirmek veya önbelleğe yeni bir öğe eklemek görece daha |
| kolaydır.</p> |
| |
| <p>Bu risk, Apache kullanıcısını kullanan diğer saldırı türleriyle |
| karşılaştırıldığında daha yüksektir. <code class="module"><a href="./mod/mod_cache_disk.html">mod_cache_disk</a></code> |
| kullanıyorsanız şunları aklınızdan çıkarmayın: (1) httpd güvenlik |
| güncellemelerini takip edin ve sunucunuzu buna göre güncelleyin. (2) |
| Mümkünse <a href="suexec.html">suEXEC</a> kullanarak CGI süreçlerini |
| Apache kullanıcısı olmayan bir kullanıcının aidiyetinde çalıştırın.</p> |
| |
| |
| |
| <h3>Önbellek Zehirlenmeleri</h3> |
| |
| |
| <p>httpd bir önbellekli vekil sunucu olarak çalıştığında önbellek |
| zehirlenmesi adı verilen sorunla karşılaşılma olasılığı vardır. |
| Önbellek zehirlenmesi, vekil sunucunun arka sunucudan yanlış (ve |
| genellikle istenmeyen) içerik almasına sebep olan bir saldırı türünü |
| betimlemek için yaygın olarak kullanılan bir terimdir.</p> |
| |
| <p>Örneğin httpd’nin çalıştığı sistemin kullandığı DNS sunucuları DNS |
| önbellek zehirlenmesinden etkilenebilecek durumdaysa, bir saldırgan |
| httpd’nin istekleri almak için başvuracağı kaynak sunucunun yerini |
| değiştirebilir. Diğer bir örnek, HTTP istek kaçakçılığı adı verilen |
| bir saldırı türüdür.</p> |
| |
| <p>Bu belge HTTP istek kaçakçılığını derinliğine incelenmesi için uygun |
| yer değildir (böyle kaynaklara arama motorunuzla erişebilirsiniz). |
| Bununla birlikte, vekil tarafından kaynak sunucudan alınan içeriği |
| tamamen denetim altına almak amacıyla kaynak sunucudaki bir açığı |
| istismar etmeye yönelik bir dizi istek yapılabileceğinin olasılık |
| dahilinde olduğunu bilmenizde yarar vardır.</p> |
| |
| </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div> |
| <div class="section"> |
| <h2><a name="filehandle" id="filehandle">Dosya Tanıtıcı Önbelleklemesi</a></h2> |
| |
| |
| <table class="related"><tr><th>İlgili Modüller</th><th>İlgili Yönergeler</th></tr><tr><td><ul><li><code class="module"><a href="./mod/mod_file_cache.html">mod_file_cache</a></code></li></ul></td><td><ul><li><code class="directive"><a href="./mod/mod_file_cache.html#cachefile">CacheFile</a></code></li><li><code class="directive"><a href="./mod/mod_cache.html#cacheenable">CacheEnable</a></code></li><li><code class="directive"><a href="./mod/mod_cache.html#cachedisable">CacheDisable</a></code></li></ul></td></tr></table> |
| |
| <p>Bir dosyanın açılması işlemi, özellikle de ağ dosya sistemlerinde |
| bulunan dosyalar için önemli bir gecikme kaynağı olabilir. Önbellekte, |
| çok sunulan dosyaların kendilerinin değil, açık dosya tanıtıcılarının |
| saklanması httpd’yi bu tür gecikmelerden koruyabilir. httpd’de tek türde |
| dosya tanıtıcı önbelleklemesi yapılabilmektedir.</p> |
| |
| <h3><code>CacheFile</code> yönergesi ile</h3> |
| |
| |
| <p>httpd’de mevcut önbelleklemenin en temel şekli |
| <code class="module"><a href="./mod/mod_file_cache.html">mod_file_cache</a></code> tarafından sağlanan dosya tanıtıcı |
| önbelleklemesidir. Bu önbellek türü dosyaların kendilerini değil açık |
| dosya tanıtıcılarının bir listesini saklar. Dosyaların bu anlamda |
| önbelleklenmesi, <code class="directive"><a href="./mod/mod_file_cache.html#cachefile">CacheFile</a></code> yönergesi yapılandırma dosyasında belirtilerek |
| sağlanabilir.</p> |
| |
| <p><code class="directive"><a href="./mod/mod_file_cache.html#cachefile">CacheFile</a></code> yönergesi |
| belirtilen dosyanın httpd başlatıldığında açılmasını ve dosya için |
| yapılan sonraki her istekte bu dosya tanıtıcısının kullanılmasını |
| sağlar.</p> |
| |
| <div class="example"><p><code> |
| CacheFile /usr/local/apache2/htdocs/index.html |
| </code></p></div> |
| |
| <p>Büyük miktarda dosyayı bu anlamda önbelleklemeyi tasarlıyorsanız |
| işletim sisteminizin açık dosya tanıtıcılarının sayısı ile ilgili |
| sınırlamasını uygun bir değere ayarlamanız gerekebilir.</p> |
| |
| <p><code class="directive"><a href="./mod/mod_file_cache.html#cachefile">CacheFile</a></code> yönergesini |
| kullandığınız takdirde dosya içeriğindeki değişiklikleri anında isteğe |
| yansıtamazsınız. httpd dosyayı ilk başlatıldığındaki haliyle |
| sunar.</p> |
| |
| <p>Eğer httpd çalışırken dosya silinmişse httpd ilk başlatıldığındaki |
| haline ilişkin dosya tanıtıcıyı sağlamaya ve dolayısıyla dosya |
| içeriğini sunmaya devam edecektir. Yani, dosya silinmiş ve artık dosya |
| sisteminde görünmüyor olsa bile httpd durdurulup dosya tanıtıcıları |
| kapanmadıkça dosyaların silinmesiyle açılan yer serbest |
| kalmayacaktır.</p> |
| |
| </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div> |
| <div class="section"> |
| <h2><a name="inmemory" id="inmemory">Sistem Belleğinde Önbellekleme</a></h2> |
| |
| |
| <table class="related"><tr><th>İlgili Modüller</th><th>İlgili Yönergeler</th></tr><tr><td><ul><li><code class="module"><a href="./mod/mod_file_cache.html">mod_file_cache</a></code></li></ul></td><td><ul><li><code class="directive"><a href="./mod/mod_cache.html#cacheenable">CacheEnable</a></code></li><li><code class="directive"><a href="./mod/mod_cache.html#cachedisable">CacheDisable</a></code></li><li><code class="directive"><a href="./mod/mod_file_cache.html#mmapfile">MMapFile</a></code></li></ul></td></tr></table> |
| |
| <p>İçeriğin sistem belleğinden sunulması içerik sunmanın evrensel olarak |
| en hızlı yoludur. Dosyaların bir disk denetleyiciden okunması ya da daha |
| kötüsü uzak bir ağdan okunması bellekten okumayla karşılaştırılamayacak |
| ölçüde yavaş işlemlerdir. Disk denetleyiciler genellikle fiziksel |
| süreçleri denetlerler. Ağ erişimi ise band genişliği sınırlamalarından |
| etkilenir. Halbuki bellek erişimi sadece nano saniyeler mertebesinde |
| gerçekleşir.</p> |
| |
| <p>Sistem belleği en pahalı saklama ortamı olması sebebiyle en verimli |
| şekilde kullanımı önemlidir. Dosyaları sistem belleğinde saklamakla |
| sistemin kullanabileceği bellek miktarını azaltmış olursunuz. İşletim |
| sistemi önbelleklemesinde göreceğiniz gibi bu öyle basit bir konu |
| değildir. httpd’nin kendi kullandığı belleğin bir kısmını önbellek |
| olarak ayırırken çok fazla bellek kullanmamak önemlidir. Aksi takdirde |
| işletim sistemi belleğin yetmediği noktada belleği diske |
| takaslayacağından istenen başarım artışı sağlanamayacaktır.</p> |
| |
| <h3>İşletim Sistemi Önbelleklemesi</h3> |
| |
| |
| <p>Günümüz iştetim sistemlerinin hemen hemen tamamında bellek içi |
| dosya/veri saklama işlemlerini çekirdek yönetir. Bu güçlü bir |
| özelliktir ve işletim sistemlerinin büyük çoğunluğu bunu böyle yapar. |
| Örneğin, Linux’ta bir dosyanın ilk defa okunduğunda ve ikinci kez |
| okunduğunda işlemcinin ne kadar meşgul edildiğine bakalım:</p> |
| |
| <div class="example"><p><code> |
| colm@coroebus:~$ time cat testfile > /dev/null<br /> |
| real 0m0.065s<br /> |
| user 0m0.000s<br /> |
| sys 0m0.001s<br /> |
| colm@coroebus:~$ time cat testfile > /dev/null<br /> |
| real 0m0.003s<br /> |
| user 0m0.003s<br /> |
| sys 0m0.000s |
| </code></p></div> |
| |
| <p>Küçük bir dosya için bile okuma süresi bakımından büyük fark ortaya |
| çıkmaktadır. Bunun sebebi çekirdeğin dosya içeriğini bellek daha |
| güncel amaçlar için lazım olana dek bellek içinde saklamasıdır.</p> |
| |
| <p>Sisteminizde yeterince yedek bellek olduğundan eminseniz, bu |
| önbellekte daha fazla dosya saklanacağından emin olabilirsiniz. |
| Bundan, önbelleğin sistem belleğinde verimli biçimde tutulması için |
| httpd’de ek bir yapılandırmaya gidilmesinin gerekmediği sonucu |
| çıkarılabilir.</p> |
| |
| <p>Bundan başka, işletim sistemi dosyaların değiştiği ve silindiği |
| zamanları bildiğinden bu tür dosyaların içerikleri gerektiğinde |
| önbellekten kendiliğinden silinmiş olur. Bellek içinde dosya saklarken |
| dosyaların değiştirilme zamanlarını bilme olanağı olmadığından bu |
| durum httpd’ye büyük yarar sağlar.</p> |
| |
| |
| <p>İşletim sisteminin dosyaların önbelleklenmesi için sağladığı bunca |
| yarara ve başarım artışına karşın bellek içinde dosya önbelleklemenin |
| httpd tarafından yerine getirilmesinin daha iyi olacağı bazı durumlar |
| vardır.</p> |
| |
| <h3><code>MMapFile</code> yönergesi ile</h3> |
| |
| |
| <p><code class="module"><a href="./mod/mod_file_cache.html">mod_file_cache</a></code> modülü, bir durağan dosyanın |
| içeriğini sunucunun başlatılması sırasında (mmap sistem çağrısıyla) |
| 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. |
| httpd bu dosyaya gelecek sonraki istekler için dosyanın bellekiçi |
| içeriğini kullanacaktır.</p> |
| |
| <div class="example"><p><code> |
| MMapFile /usr/local/apache2/htdocs/index.html |
| </code></p></div> |
| |
| <p><code class="directive"><a href="./mod/mod_file_cache.html#cachefile">CacheFile</a></code> yönergesinde |
| olduğu gibi bu dosyalarda httpd başlatıldıktan sonra yapılacak bir |
| değişiklikten httpd’nin haberi olmayacaktır.</p> |
| |
| <p><code class="directive"><a href="./mod/mod_file_cache.html#mmapfile">MMapFile</a></code> yönergesi |
| ayırdığı belleğin toplam miktarı ile ilgilenmez, dolayısıyla |
| yönergenin aşırı kullanımından kaçınmalısınız. httpd’nin çocuk |
| süreçlerinin her biri bu belleğin kendilerine ait birer kopyasını |
| yapacağından belleğe eşlenen dosyaların çok yer kaplamaması büyük önem |
| taşımaktadır; aksi takdirde işletim sistemi belleği diske |
| takaslayacağından beklenen fayda sağlanamayacaktır.</p> |
| |
| </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div> |
| <div class="section"> |
| <h2><a name="disk" id="disk">Disk Üzerinde Önbellekleme</a></h2> |
| |
| |
| <table class="related"><tr><th>İlgili Modüller</th><th>İlgili Yönergeler</th></tr><tr><td><ul><li><code class="module"><a href="./mod/mod_cache_disk.html">mod_cache_disk</a></code></li></ul></td><td><ul><li><code class="directive"><a href="./mod/mod_cache.html#cacheenable">CacheEnable</a></code></li><li><code class="directive"><a href="./mod/mod_cache.html#cachedisable">CacheDisable</a></code></li></ul></td></tr></table> |
| |
| <p><code class="module"><a href="./mod/mod_cache_disk.html">mod_cache_disk</a></code> modülü önbelleklemenin |
| <code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code> için disk üzerinde yapılmasını mümkün |
| kılar. Bbu önbellekleme akıllıca yapılır ve önbellekteki içerik |
| sadece geçerli kabul edildiği sürece sunulabilir.</p> |
| |
| <p>Modül bu amaçla genelde şöyle kullanılır:</p> |
| |
| <div class="example"><p><code> |
| CacheRoot /var/cache/apache/<br /> |
| CacheEnable disk /<br /> |
| CacheDirLevels 2<br /> |
| CacheDirLength 1 |
| </code></p></div> |
| |
| <p>En önemlisi önbelleklenen dosyaların yerel olarak saklanması olup |
| işletim sisteminin sağladığı bellekiçi önbelleklemeden de ayrıca |
| faydalanılmış olur. Bu bakımdan, dosyalar disk üzerinde saklansa bile |
| sıkça erişilen dosyalar işletim sistemi sayesinde aslında bellekten |
| sunulmuş olacaklardır.</p> |
| |
| <h3>Önbellekte Saklamanın Anlamı</h3> |
| |
| |
| <p><code class="module"><a href="./mod/mod_cache_disk.html">mod_cache_disk</a></code> öğeleri önbellekte saklamak için |
| istek yapılan URL’nin 22 karakterlik özetini oluşturur. Bu özet, çok |
| sayıda URL’nin aynı özeti oluşturmaması için konak ismi, protokol, |
| port ve varsa CGI argümanlarından oluşur.</p> |
| |
| <p>Özeti oluşturan karakterler 64 karakterlik bir karakter kümesinden |
| seçildiğinden oluşturulması olası farklı özet sayısı 64^22’dir. |
| Örneğin, bir URL’nin <code>xyTGxSMO2b68mBCykqkp1w</code> gibi bir |
| özeti olabilir. Bu özet, bu URL ile erişilen dosyalar önbellek içinde |
| saklanırken dosya ismi öneki olarak kullanılır. Ancak bununla |
| 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 |
| değerlerine göre önce dizinlere ayrılır.</p> |
| |
| <p><code class="directive"><a href="./mod/mod_cache_disk.html#cachedirlevels">CacheDirLevels</a></code> |
| yönergesi kaç alt seviye dizin olacağını belirler. Örneğin, yukarıdaki |
| özete sahip bir dosyanın isminin başına yukarıdaki yapılandırma |
| örneğine uygun olarak |
| <code>/var/cache/apache/x/y/TGxSMO2b68mBCykqkp1w</code> gibi bir önek |
| getirilebilirdi.</p> |
| |
| <p>Bu tekniğin asıl amacı belli bir dizin içinde bulunabilecek |
| dosyaların ve alt dizinlerin sayısını düşük tutmaktır. Bu sayının |
| büyük olması çoğu işletim sisteminde başarımın düşmesine sebep olur. |
| <code class="directive"><a href="./mod/mod_cache_disk.html#cachedirlength">CacheDirLength</a></code> |
| yönergesi "1" değeriyle kullanıldığında her dizin altında en fazla 64 |
| alt dizin veya dosya açılabilir. "2" değeriyle kullanıldığında ise bu |
| sayı 64^2’ye yükselir ve böyle artarak gider. İyi bir sebebiniz |
| olmadıkça <code class="directive"><a href="./mod/mod_cache_disk.html#cachedirlength">CacheDirLength</a></code> için değer olarak |
| "1" belirtmenizi öneririz.</p> |
| |
| <p><code class="directive"><a href="./mod/mod_cache_disk.html#cachedirlevels">CacheDirLevels</a></code> |
| yönergesine atanacak değer önbellekte saklamayı düşündüğünüz olası |
| dosya sayısı ile ilgilidir. Yukarıdaki örnekte olduğu gibi "2" |
| değerini belirtirseniz, toplamda en fazla 4096 dizin oluşturulabilir. |
| 1 milyon dosyanın önbelleklendiği bir durumda bu, her dizinde yaklaşık |
| olarak 245 önbelleklenmiş URL demektir.</p> |
| |
| <p>Her URL için önbellekte en az iki dosya saklanır. Biri genellikle URL |
| hakkındaki temel verilerden oluşan ".header" dosyasıdır, diğeri ise |
| sunulacak içeriğin bire bir kopyası olan ".data" dosyasıdır.</p> |
| |
| <p>"Vary" başlığı üzerinden içeriğin uzlaşıldığı durumda URL için bir |
| ".vary" dizini oluşturulur. Bu dizin her biri farklı bir uzlaşıma ait |
| çok sayıda ".data" dosyası içerebilir.</p> |
| |
| |
| <h3>Disk Önbelleğinin Bakımı</h3> |
| |
| |
| <p><code class="module"><a href="./mod/mod_cache_disk.html">mod_cache_disk</a></code> zaman aşımına uğrayan önbellekli |
| içeriği silse de önbelleğin toplam boyu ve ne kadar boş bellek kaldığı |
| hakkında bilgi vermez.</p> |
| |
| <p>Bunun yerine httpd önbellek içeriğini düzenli aralıklarla |
| temizleyebilmeniz için <code class="program"><a href="./programs/htcacheclean.html">htcacheclean</a></code> adında bir araç |
| içerir. Önbellek için azami ne kadar yer kullanılacağının ve bunun |
| üzerinde <code class="program"><a href="./programs/htcacheclean.html">htcacheclean</a></code>’i hangi sıklıkta |
| çalıştırılacağının tespiti biraz karmaşık bir işlem olup uygun değerler |
| genellikle deneme yanılma yoluyla bulunur.</p> |
| |
| <p><code class="program"><a href="./programs/htcacheclean.html">htcacheclean</a></code> iki işlem kipine sahiptir. Kalıcı bir |
| artalan süreci olarak çalışabileceği gibi cron üzerinden belli |
| aralıklarla da çalıştırılabilir. Çok büyük (onlarca GB) önbelleklerde |
| <code class="program"><a href="./programs/htcacheclean.html">htcacheclean</a></code>’in işini bitirmesi 1 saatten fazla |
| sürebileceğinden, cron ile çalıştırma durumunda aynı anda birden fazla |
| kopyanın çalışıyor durumda olmaması için |
| <code class="program"><a href="./programs/htcacheclean.html">htcacheclean</a></code>’in çalıştırılma aralığını iyi |
| belirlemek gerekir.</p> |
| |
| <p class="figure"> |
| <img src="images/caching_fig1.tr.png" alt="" width="600" height="406" /><br /> |
| <a id="figure1" name="figure1"><dfn>Şekil 1</dfn></a>: |
| Önbelleğin büyümesi ve düzenli aralıklarla temizlenmesi.</p> |
| |
| <p><code class="module"><a href="./mod/mod_cache_disk.html">mod_cache_disk</a></code> ne kadar önbellek alanı kullandığı |
| ile ilgili bir bilgi vermediğinden <code class="program"><a href="./programs/htcacheclean.html">htcacheclean</a></code>’in |
| bir temizlik sonrası yeterince büyük bir genişleme alanı kalacak |
| şekilde yapılandırılması önemlidir.</p> |
| |
| |
| </div></div> |
| <div class="bottomlang"> |
| <p><span>Mevcut Diller: </span><a href="./en/caching.html" hreflang="en" rel="alternate" title="English"> en </a> | |
| <a href="./fr/caching.html" hreflang="fr" rel="alternate" title="Français"> fr </a> | |
| <a href="./tr/caching.html" title="Türkçe"> tr </a></p> |
| </div><div id="footer"> |
| <p class="apache">Copyright 2011 The Apache Software Foundation.<br /><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> altında lisanslıdır.</p> |
| <p class="menu"><a href="./mod/">Modüller</a> | <a href="./mod/directives.html">Yönergeler</a> | <a href="./faq/">SSS</a> | <a href="./glossary.html">Terimler</a> | <a href="./sitemap.html">Site Haritası</a></p></div> |
| </body></html> |