Takip et

Apache İçerik Önbellekleme Yapılandırması (Ubuntu 14.04)

Apache İçerik Önbellekleme Yapılandırması (Ubuntu 14.04) Web sitelerinin performansı, kullanıcı deneyimi ve arama motoru sıralaması için

Apache İçerik Önbellekleme Yapılandırması (Ubuntu 14.04)

Web sitelerinin performansı, kullanıcı deneyimi ve arama motoru sıralaması için kritik bir faktördür. Yüksek trafikli sitelerde veya dinamik içerik sunan uygulamalarda, her isteği sıfırdan işlemek sunucu kaynaklarını tüketir ve yanıt sürelerini uzatır. Bu sorunu çözmek için en etkili yöntemlerden biri içerik önbelleklemedir. Apache HTTP Sunucusu, modüler yapısı sayesinde güçlü ve esnek önbellekleme yetenekleri sunar. Bu makalede, Ubuntu 14.04 işletim sistemi üzerinde Apache içerik önbelleklemesinin nasıl yapılandırılacağını, farklı önbellekleme modüllerini, yapılandırma direktiflerini ve en iyi uygulamaları detaylı bir şekilde inceleyeceğiz.

1. Giriş: Önbellekleme Neden Önemli?

Önbellekleme (Caching), sıkça erişilen verilerin veya içeriklerin daha hızlı erişilebilir bir konumda (önbellekte) depolanması işlemidir. Bir kullanıcı bir web sayfasını ziyaret ettiğinde, sunucu genellikle veritabanından veri çeker, dinamik içerik oluşturur ve bu içeriği istemciye gönderir. Önbellekleme devreye girdiğinde, bu işlemden geçen nihai içerik veya ara sonuçlar belirli bir süre için depolanır. Sonraki aynı istekler geldiğinde, sunucu içeriği sıfırdan oluşturmak yerine önbellekten hızlıca sunar.

Bu yaklaşımın temel faydaları şunlardır:

  • Performans Artışı: Sayfa yükleme süreleri kısalır, kullanıcı deneyimi iyileşir.
  • Sunucu Yükünün Azalması: CPU, bellek ve disk I/O gibi sunucu kaynakları üzerindeki baskı azalır. Bu, aynı donanım üzerinde daha fazla trafiği yönetebilme anlamına gelir.
  • Bant Genişliği Tasarrufu: Özellikle ters proxy önbelleklemesi durumunda, sunucunun internete çıkan bant genişliği kullanımı azalabilir.
  • Daha İyi Kullanıcı Deneyimi: Hızlı yüklenen sayfalar, kullanıcıların sitede daha uzun süre kalmasını sağlar ve dönüşüm oranlarını artırır.

Apache, bu önbellekleme mekanizmasını modüler bir yapıyla sunar. Ubuntu 14.04 üzerinde Apache 2.4 versiyonu genellikle varsayılan olarak gelir ve bu versiyon, önceki versiyonlara göre daha gelişmiş önbellekleme özelliklerine sahiptir.

2. Apache Önbellekleme Mekanizmaları ve Modülleri

Apache, içerik önbellekleme için bir dizi modül kullanır. Temel olarak, önbellekleme mantığını sağlayan bir çekirdek modül ve bu önbelleğin nerede (disk, bellek) depolanacağını belirleyen depolama modülleri bulunur.

2.1. mod_cache

mod_cache, Apache’nin temel önbellekleme modülüdür. Önbellekleme politikalarını yönetir, istekleri önbelleğe yönlendirir ve önbellekten yanıtları sunar. Ancak, içeriği kendisi depolamaz; bunun için alt modüllere ihtiyaç duyar.

2.2. mod_disk_cache

mod_disk_cache, önbelleğe alınan içeriği sunucunun dosya sisteminde (disk üzerinde) depolayan modüldür. Büyük miktarda veri önbelleklemek ve Apache yeniden başlatıldığında önbelleğin kalıcı olmasını sağlamak için idealdir. Disk I/O performansı, bu modülün etkinliği için önemli bir faktördür.

2.3. mod_mem_cache

mod_mem_cache, önbelleğe alınan içeriği sunucunun belleğinde (RAM) depolayan modüldür. Disk tabanlı önbelleğe göre çok daha hızlı erişim sağlar ancak bellek sınırlıdır ve Apache yeniden başlatıldığında önbellek içeriği kaybolur. Genellikle küçük, sık erişilen ve çok hızlı sunulması gereken içerikler için kullanılır. Bu modül genellikle mod_socache_shmcb ile birlikte çalışır.

2.4. mod_expires ve mod_headers

Bu modüller doğrudan önbellekleme depolaması yapmazlar, ancak istemci tarafı (tarayıcı) önbelleklemesini ve proxy sunucuların önbelleklemesini kontrol eden HTTP üstbilgilerini (Cache-Control, Expires) yönetmek için kritik öneme sahiptirler. Sunucu tarafı önbelleklemenin yanı sıra, istemci tarafı önbellekleme de performansı önemli ölçüde artırır.

3. Ön Hazırlıklar

Önbellekleme yapılandırmasına başlamadan önce, Ubuntu 14.04 sisteminizin güncel olduğundan ve Apache’nin kurulu olduğundan emin olmalısınız.

3.1. Sistem Güncelleme

Terminali açın ve aşağıdaki komutları çalıştırarak sisteminizi güncelleyin:

sudo apt-get update
sudo apt-get upgrade

3.2. Apache Kurulumu ve Kontrolü

Eğer Apache henüz kurulu değilse, aşağıdaki komutla kurabilirsiniz:

sudo apt-get install apache2

Apache servisinin çalıştığını kontrol etmek için:

sudo service apache2 status

Tarayıcınızda http://localhost adresine giderek Apache varsayılan sayfasını görmelisiniz.

3.3. Gerekli Modülleri Etkinleştirme

Apache önbellekleme için gerekli modülleri etkinleştirmemiz gerekiyor. Ubuntu’da bu işlem a2enmod komutu ile yapılır. Daha sonra Apache’yi yeniden başlatmayı unutmayın.

sudo a2enmod cache
sudo a2enmod disk_cache
sudo a2enmod mem_cache
sudo a2enmod headers
sudo a2enmod expires
sudo a2enmod rewrite # URL yeniden yazma için genellikle gereklidir
sudo a2enmod socache_shmcb # mod_mem_cache için gerekli
sudo service apache2 restart

Bu komutlar, Apache’nin önbellekleme yeteneklerini kullanabilmesi için gerekli olan tüm modülleri etkinleştirir.

4. mod_cache ve mod_disk_cache Yapılandırması

Disk tabanlı önbellekleme, büyük dosyalar ve uzun süreli önbellekleme için en yaygın kullanılan yöntemdir. Şimdi bu modüllerin nasıl yapılandırılacağını inceleyelim.

4.1. Cache Dizini Oluşturma ve İzinler

Önbellek dosyalarının depolanacağı bir dizin oluşturmamız ve Apache kullanıcısının (genellikle www-data) bu dizine yazma iznine sahip olduğundan emin olmamız gerekir.

sudo mkdir -p /var/cache/apache2/mod_disk_cache
sudo chown -R www-data:www-data /var/cache/apache2/mod_disk_cache
sudo chmod -R 755 /var/cache/apache2/mod_disk_cache

Bu komutlar, /var/cache/apache2/mod_disk_cache dizinini oluşturur ve Apache’nin bu dizine dosya yazıp okuyabilmesini sağlar.

4.2. Apache Ana Yapılandırması (apache2.conf)

Apache’nin ana yapılandırma dosyası genellikle /etc/apache2/apache2.conf veya /etc/apache2/conf-available/cache.conf gibi bir dosyada bulunur. Genel önbellekleme ayarlarını buraya ekleyebiliriz.

Aşağıdaki direktifleri ilgili yapılandırma dosyasına ekleyin (örneğin, /etc/apache2/conf-available/cache.conf oluşturup içine ekleyebilir, sonra sudo a2enconf cache ile etkinleştirebilirsiniz):


    
        # Önbellek dizini ve önbellek tipi
        CacheRoot "/var/cache/apache2/mod_disk_cache"
        CacheEnable disk "/"

        # Önbellek boyutu limitleri (isteğe bağlı)
        # CacheMaxFileSize 10000000 # 10 MB'tan büyük dosyaları önbelleğe alma
        # CacheMinFileSize 1000     # 1 KB'tan küçük dosyaları önbelleğe alma

        # Önbellek dizini yönetimi (isteğe bağlı)
        # CacheDirLevels 2      # Önbellek dizin yapısının derinliği
        # CacheDirLength 1      # Her dizin seviyesindeki karakter sayısı

        # Önbellek temizleme ayarları (isteğe bağlı, disk alanı yönetimi için)
        # CacheMaxitems 10000   # Önbellekteki maksimum öğe sayısı
        # CacheGcInterval 4     # Önbellek temizleme işlemi arasındaki dakika
        # CacheGcMaxDocs 1000   # Bir temizleme işleminde maksimum silinecek belge
        # CacheGcPercent 10     # Önbelleğin yüzde kaçının temizleneceği

        # Önbellek kontrolü (Cache-Control üstbilgilerini yok sayma)
        # CacheIgnoreNoLastMod On
        # CacheIgnoreCacheControl On

        # Önbelleğe alınacak HTTP yöntemleri (GET, HEAD varsayılan olarak önbelleğe alınır)
        # CacheStoreNoStore Off
        # CacheStorePrivate Off

        # Önbellek yaşam süresi (eğer istemci veya kaynak sunucu tarafından belirtilmezse)
        # CacheDefaultExpire 3600 # Varsayılan olarak 1 saat önbellekle

        # Önbellek doğrulama ayarları
        # CacheLastModifiedFactor 0.1 # Son değiştirilme zamanına göre önbellek geçerliliği
    

Açıklamalar:

  • CacheRoot "/var/cache/apache2/mod_disk_cache": Önbellek dosyalarının depolanacağı ana dizini belirtir.
  • CacheEnable disk "/": Kök URL (/) altındaki tüm içerikler için disk tabanlı önbelleklemeyi etkinleştirir. Belirli URL’ler için de etkinleştirebilirsiniz, örneğin CacheEnable disk "/images" sadece resimleri önbellekler.
  • CacheMaxFileSize ve CacheMinFileSize: Önbelleğe alınacak dosyaların boyut aralığını belirler. Çok büyük dosyaların önbelleğe alınması disk alanını hızla doldurabilirken, çok küçük dosyaların önbelleğe alınması performansa kayda değer bir katkı sağlamayabilir.
  • CacheDirLevels ve CacheDirLength: Önbellek dizininin hiyerarşik yapısını kontrol eder. Varsayılan değerler genellikle yeterlidir, ancak çok sayıda dosya önbellekliyorsanız bu değerleri artırmak dosya sistemi performansını artırabilir. Örneğin, CacheDirLevels 2 ve CacheDirLength 1, /var/cache/apache2/mod_disk_cache/X/Y/filename şeklinde bir yapı oluşturur.
  • CacheDefaultExpire: Eğer kaynak sunucu veya istemci tarafından bir önbellek yaşam süresi belirtilmezse, bu direktif varsayılan bir yaşam süresi (saniye cinsinden) tanımlar.

4.3. Sanal Host Yapılandırması

Belirli bir sanal host (VirtualHost) için önbellekleme ayarlarını özelleştirmek isteyebilirsiniz. Bu durumda, ilgili sanal host’un yapılandırma dosyasına (örneğin, /etc/apache2/sites-available/example.com.conf) aşağıdaki direktifleri ekleyebilirsiniz:


    ServerName example.com
    DocumentRoot /var/www/example.com/public_html

    
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
    

    # Bu sanal host için önbellekleme ayarları
    CacheEnable disk "/static/"
    CacheEnable disk "/images/"
    CacheMaxFileSize 5000000 # 5 MB
    CacheDisable /admin/    # Yönetici panelini önbelleğe alma

    # Önbellek kontrolü
    
        # Önbellekleme üstbilgilerini ayarla
        Header set Cache-Control "max-age=3600, public"
        ExpiresActive On
        ExpiresByType image/jpeg "access plus 1 week"
        ExpiresByType text/css "access plus 1 day"
    

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

Bu örnekte:

  • CacheEnable disk "/static/" ve CacheEnable disk "/images/": Sadece /static/ ve /images/ altındaki içeriklerin disk önbelleğine alınmasını sağlar.
  • CacheDisable /admin/: /admin/ dizini altındaki hiçbir içeriğin önbelleğe alınmamasını sağlar, çünkü yönetici paneli genellikle dinamiktir ve önbelleğe alınmamalıdır.
  • Header set Cache-Control "max-age=3600, public": İstemci ve proxy sunuculara içeriğin 1 saat boyunca önbelleğe alınabileceğini söyler.
  • ExpiresByType: Belirli MIME tipleri için istemci tarafı önbellek yaşam sürelerini ayarlar.

Yapılandırma değişikliklerinden sonra Apache’yi yeniden başlatmayı unutmayın:

sudo service apache2 restart

5. mod_mem_cache Yapılandırması

Bellek tabanlı önbellekleme, en hızlı erişimi sağlar ancak bellek kaynakları sınırlı olduğu için dikkatli kullanılmalıdır. Genellikle mod_disk_cache ile birlikte veya belirli küçük, kritik içerikler için tercih edilir.

5.1. Modülü Etkinleştirme

Daha önce sudo a2enmod mem_cache ve sudo a2enmod socache_shmcb komutlarını çalıştırarak bu modülleri etkinleştirdiğinizden emin olun.

5.2. Yapılandırma Direktifleri

Bellek önbelleklemesi için genellikle apache2.conf veya özel bir yapılandırma dosyasında (örneğin, /etc/apache2/conf-available/mem_cache.conf) aşağıdaki direktifler kullanılır:


    
        # Bellek önbellek sağlayıcısını ve boyutunu ayarla
        # socache_shmcb genellikle mod_mem_cache için en iyi seçenektir
        CacheEnable mem "/"
        MCacheSize 409600     # 400 MB bellek önbelleği (KB cinsinden)
        MCacheMaxObjectCount 10000 # Maksimum 10.000 obje önbellekle
        MCacheMinObjectSize 1     # 1 bayttan küçük objeleri önbelleğe alma
        MCacheMaxObjectSize 51200 # 50 KB'tan büyük objeleri önbelleğe alma

        # Önbellek yaşam süresi (eğer istemci veya kaynak sunucu tarafından belirtilmezse)
        # MCacheDefaultExpire 600 # Varsayılan olarak 10 dakika önbellekle

        # Önbellek temizleme ayarları (isteğe bağlı)
        # MCacheRemovalAlgorithm GDSF # En az sık kullanılanları sil
    

Açıklamalar:

  • CacheEnable mem "/": Kök URL altındaki tüm içerikler için bellek tabanlı önbelleklemeyi etkinleştirir.
  • MCacheSize 409600: Bellek önbelleğinin toplam boyutunu kilobayt cinsinden belirler (bu örnekte 400 MB). Bu değeri sunucunuzun boş RAM miktarına göre ayarlamanız önemlidir.
  • MCacheMaxObjectCount: Bellek önbelleğinde depolanabilecek maksimum obje sayısını belirler.
  • MCacheMinObjectSize ve MCacheMaxObjectSize: Bellek önbelleğine alınacak objelerin boyut aralığını belirler. Genellikle çok büyük dosyalar disk önbelleğine, daha küçük ve kritik dosyalar bellek önbelleğine alınır.
  • MCacheDefaultExpire: Bellek önbelleğindeki objeler için varsayılan yaşam süresini (saniye cinsinden) belirler.

Yine, yapılandırma değişikliklerinden sonra Apache’yi yeniden başlatın:

sudo service apache2 restart

6. Önbellekleme Politikaları ve Kontrolü (mod_expires ve mod_headers)

Apache’nin kendi sunucu tarafı önbelleklemesinin yanı sıra, istemci tarafı (tarayıcı) ve ara proxy sunucuların (CDN’ler gibi) önbelleklemesini kontrol etmek de çok önemlidir. Bu, Cache-Control ve Expires HTTP üstbilgileri aracılığıyla yapılır.

6.1. mod_headers ile Cache-Control Üstbilgisi

mod_headers modülü, HTTP yanıt üstbilgilerini eklemenizi, değiştirmenizi veya silmenizi sağlar. Cache-Control üstbilgisi, içeriğin nasıl ve ne kadar süreyle önbelleğe alınabileceğini belirten en modern ve esnek yoldur.

Sanal host yapılandırmanıza veya bir dizin bloğuna ekleyebilirsiniz:


    Header set Cache-Control "max-age=604800, public"


    Header set Cache-Control "max-age=3600, public, must-revalidate"


    Header set Cache-Control "no-cache, no-store, must-revalidate"
    Header set Pragma "no-cache"
    Header set Expires "0"
  • max-age=604800: İçeriğin istemci tarafında 7 gün (604800 saniye) boyunca önbelleğe alınabileceğini belirtir.
  • public: İçeriğin herhangi bir önbellek tarafından (hem istemci hem de proxy) önbelleğe alınabileceğini gösterir.
  • must-revalidate: Önbellek süresi dolduğunda, istemcinin sunucuya içeriğin güncel olup olmadığını sorması gerektiğini belirtir.
  • no-cache, no-store: İçeriğin hiçbir şekilde önbelleğe alınmaması gerektiğini belirtir. Genellikle dinamik veya hassas içerikler için kullanılır.

6.2. mod_expires ile Expires Üstbilgisi

mod_expires modülü, tarayıcıların ve proxy sunucuların içeriği belirli bir tarihe kadar önbelleğe almasını sağlayan Expires üstbilgisini otomatik olarak oluşturur. Bu, Cache-Control‘dan daha eski bir yöntem olsa da hala yaygın olarak kullanılır.


    ExpiresActive On
    ExpiresDefault "access plus 1 month"

    ExpiresByType text/html "access plus 1 hour"
    ExpiresByType text/css "access plus 1 week"
    ExpiresByType application/javascript "access plus 1 week"
    ExpiresByType image/jpeg "access plus 1 month"
    ExpiresByType image/png "access plus 1 month"
    ExpiresByType image/gif "access plus 1 month"
    ExpiresByType application/pdf "access plus 1 month"
    ExpiresByType application/x-shockwave-flash "access plus 1 month"
  • ExpiresActive On: mod_expires‘i etkinleştirir.
  • ExpiresDefault "access plus 1 month": Eğer belirli bir MIME tipi için kural yoksa, varsayılan olarak içeriğin 1 ay boyunca önbelleğe alınabileceğini belirtir.
  • ExpiresByType image/jpeg "access plus 1 month": JPEG resimlerinin 1 ay boyunca önbelleğe alınmasını sağlar.

Bu üstbilgiler, hem Apache’nin kendi önbelleklemesiyle hem de genel web performansıyla birlikte çalışarak en iyi sonuçları verir.

7. Önbellek Geçersiz Kılma (Cache Invalidation)

Önbellekleme, içerik güncellemelerini zorlaştırabilir. Bir içerik değiştiğinde, önbellekte eski sürüm kalabilir. Bu durumu önlemek için önbelleğin geçersiz kılınması (invalidation) gerekir.

7.1. Manuel Temizleme

Disk tabanlı önbellek için, önbellek dizinini manuel olarak silebilirsiniz:

sudo rm -rf /var/cache/apache2/mod_disk_cache/*
sudo service apache2 restart # Apache'yi yeniden başlatmak mod_mem_cache'i temizler

Bu yöntem, önbelleği tamamen temizler. Ancak, dinamik bir web sitesinde her içerik güncellemesinde bunu yapmak pratik değildir.

7.2. Programatik Temizleme ve Akıllı Politikalar

  • Versiyonlama (Versioning): Statik dosyalar için en iyi yöntemlerden biri, dosya adlarına veya URL’lere bir versiyon numarası veya hash eklemektir (örneğin, style.css?v=1.2 veya style.1a2b3c.css). İçerik değiştiğinde versiyon numarasını güncellerseniz, tarayıcılar ve proxy’ler otomatik olarak yeni sürümü ister.
  • Cache-Control: no-cache veya must-revalidate: Dinamik içerikler için, sunucunun her zaman güncel bir kopya için doğrulaması gerektiğini belirtmek üzere bu üstbilgileri kullanın.
  • Apache’nin Cache-Control Direktifleri: CacheMaxExpire, CacheLastModifiedFactor gibi direktiflerle Apache’nin önbellek doğrulama davranışını ayarlayabilirsiniz.
  • Önbellek Anahtarı (Cache Key) Değişimi: Özellikle ters proxy önbelleklemesinde (örneğin, Varnish ile Apache önünde), bir içeriğin önbellek anahtarını değiştirerek yeni bir önbellek girdisi oluşturulmasını sağlayabilirsiniz.

8. Önbelleklemenin Test Edilmesi

Önbelleklemenin doğru çalıştığından emin olmak için birkaç farklı yöntemle test yapabilirsiniz.

8.1. HTTP Üstbilgileri Kontrolü

Tarayıcınızın geliştirici araçlarını (F12) kullanarak Ağ (Network) sekmesinden bir sayfa isteği yapın ve yanıt üstbilgilerini inceleyin.

  • Cache-Control ve Expires üstbilgilerinin beklediğiniz değerleri içerdiğinden emin olun.
  • Apache’nin kendi önbelleklemesi etkinse, genellikle X-Cache veya X-Cache-Lookup gibi özel üstbilgiler görürsünüz. Örneğin:
    • X-Cache: HIT from example.com: İçerik önbellekten sunuldu.
    • X-Cache: MISS from example.com: İçerik önbellekte bulunamadı ve kaynak sunucudan alındı.

8.2. Apache Erişim Logları

Apache erişim loglarını (/var/log/apache2/access.log) inceleyerek isteklerin durumunu görebilirsiniz. Önbellekten gelen istekler genellikle daha hızlı yanıt sürelerine sahip olacaktır.

8.3. Cache Dizini Kontrolü (Disk Önbelleği İçin)

Eğer mod_disk_cache kullanıyorsanız, /var/cache/apache2/mod_disk_cache dizinine bakarak önbellek dosyalarının oluşup oluşmadığını kontrol edebilirsiniz:

sudo ls -l /var/cache/apache2/mod_disk_cache

Bu dizin altında hiyerarşik bir yapı ve önbelleğe alınan içeriğin ikili temsillerini göreceksiniz.

9. Performans İpuçları ve En İyi Uygulamalar

Apache önbelleklemesinden en iyi şekilde yararlanmak için bazı ipuçları ve en iyi uygulamalar:

  • Doğru Önbellekleme Stratejisi: Her şeyi önbelleklemeye çalışmayın. Statik dosyalar (resimler, CSS, JS), sık güncellenmeyen dinamik içerik parçaları veya tam sayfalar için önbellekleme en etkilidir. Kullanıcıya özel (kişiselleştirilmiş) veya sık güncellenen içerikler için önbellekleme yapmaktan kaçının veya kısa süreli önbellekleme kullanın.
  • Önbellek Boyutu ve Konumu: Disk önbelleği için yeterli disk alanı ayırın. Bellek önbelleği için sunucunuzun boş RAM miktarını göz önünde bulundurun. Aşırı bellek kullanımı sistemi yavaşlatabilir.
  • mod_disk_cache ve mod_mem_cache Kombinasyonu: Sık erişilen küçük dosyaları (ikonlar, küçük CSS/JS) mod_mem_cache ile, daha büyük ve daha az sık erişilen statik dosyaları (büyük resimler, PDF’ler) mod_disk_cache ile önbelleklemek iyi bir stratejidir.
  • İstemci Tarafı Önbellekleme Önceliği: Her zaman önce istemci tarafı önbelleklemeyi optimize edin (Cache-Control, Expires). Bu, sunucuya hiç istek gelmemesini sağlayarak en büyük performansı sunar.
  • GZIP Sıkıştırma: Önbelleklemenin yanı sıra, mod_deflate ile içerik sıkıştırmayı etkinleştirmek de bant genişliği kullanımını azaltır ve yükleme sürelerini hızlandırır. Sıkıştırılmış içerik önbelleğe alınmalıdır.
  • Dinamik İçerik ve Kimlik Doğrulama: Kimlik doğrulaması gerektiren sayfaları veya kullanıcıya özel dinamik içerikleri önbelleğe almaktan kaçının. Yanlışlıkla bir kullanıcının kişisel verilerini başka bir kullanıcıya sunabilirsiniz. Eğer önbelleklemek zorundaysanız, Vary: Cookie veya Vary: Authorization gibi üstbilgileri kullanarak farklı kullanıcılar için farklı önbellek kopyaları oluşturulmasını sağlayın.
  • SSL/TLS ile Önbellekleme: HTTPS üzerinden sunulan içerikler genellikle varsayılan olarak önbelleğe alınmaz (Cache-Control: private). Güvenli içeriği önbelleklemek istiyorsanız, Cache-Control: public üstbilgisini dikkatli bir şekilde kullanmanız gerekebilir.
  • Apache Yeniden Başlatma: Önbellekleme yapılandırmasında herhangi bir değişiklik yaptıktan sonra Apache’yi yeniden başlatmayı unutmayın.

10. Sıkça Sorulan Sorular (SSS)

10.1. Apache önbelleği ne kadar yer kaplamalı?

Bu, web sitenizin boyutuna, trafiğine ve önbelleklemek istediğiniz içeriğin miktarına bağlıdır. Disk önbelleği için yüzlerce MB’tan birkaç GB’a kadar değişebilir. Bellek önbelleği için genellikle 100 MB ile 500 MB arası bir değer yeterli olabilir, ancak sunucunuzun toplam RAM’ini ve diğer uygulamaların bellek ihtiyacını göz önünde bulundurmalısınız.

10.2. Önbellek dizinini nereye oluşturmalıyım?

Genellikle /var/cache/apache2/ altında özel bir dizin (örneğin, mod_disk_cache) oluşturmak en iyi uygulamadır. Bu, standart bir konumdur ve sistem bakımı sırasında kolayca bulunabilir.

10.3. Önbellekleme, dinamik PHP sayfaları için de çalışır mı?

Evet, Apache mod_cache, PHP tarafından oluşturulan HTML çıktısını da önbelleğe alabilir. Ancak, PHP betiği tarafından gönderilen Cache-Control üstbilgileri Apache’nin önbellekleme davranışını etkileyecektir. Eğer PHP no-cache gönderiyorsa, Apache bunu dikkate alacaktır. Bu durumda, CacheIgnoreCacheControl On direktifini kullanmanız gerekebilir, ancak bunu dikkatli yapın, çünkü dinamik içeriği yanlışlıkla önbellekleyebilirsiniz.

10.4. Önbellek temizleme işlemini otomatikleştirebilir miyim?

Evet, CacheGcInterval, CacheGcMaxDocs ve CacheGcPercent gibi direktifler, Apache’nin kendi önbellek temizleme mekanizmalarını sağlar. Daha gelişmiş otomasyon için, web uygulamanızda bir içerik güncellendiğinde Apache önbelleğini temizleyen özel bir betik (örneğin, rm -rf /var/cache/apache2/mod_disk_cache/* komutunu çalıştıran) yazabilirsiniz.

11. Sorun Giderme

Önbellekleme yapılandırmasında karşılaşabileceğiniz bazı yaygın sorunlar ve çözümleri:

  • Önbellek Oluşmuyor:
    • mod_cache, mod_disk_cache/mod_mem_cache modüllerinin etkin olduğundan emin olun (sudo a2enmod).
    • Önbellek dizininin (CacheRoot) doğru olduğundan ve Apache kullanıcısının (www-data) bu dizine yazma izinlerine sahip olduğundan emin olun (sudo chown, sudo chmod).
    • Apache hata loglarını (/var/log/apache2/error.log) kontrol edin.
    • CacheEnable direktifinin doğru kapsamda (genel, sanal host, konum) ve doğru URL’ler için tanımlandığından emin olun.
  • Eski İçerik Sunuluyor:
    • Önbellek yaşam sürelerini (CacheDefaultExpire, ExpiresByType, Cache-Control max-age) kontrol edin. Çok uzun ayarlanmış olabilirler.
    • Kaynak sunucunun veya PHP uygulamasının Cache-Control: no-cache veya Expires: 0 gibi üstbilgiler göndermediğinden emin olun.
    • Gerekirse önbelleği manuel olarak temizleyin ve Apache’yi yeniden başlatın.
    • İstemci tarafı tarayıcı önbelleğini de temizlemeyi unutmayın (Ctrl+F5 veya Shift+F5).
  • Performans Artışı Yok:
    • Önbelleğe alınan içeriğin gerçekten sık erişilen içerik olup olmadığını kontrol edin.
    • X-Cache üstbilgisini kontrol ederek önbellek hit oranını gözlemleyin. Eğer çoğu istek MISS olarak dönüyorsa, önbellekleme stratejinizi gözden geçirin.
    • Sunucunuzda yeterli RAM veya hızlı disk I/O olduğundan emin olun.

12. Sonuç

Apache içerik önbelleklemesi, web sitenizin performansını artırmak, sunucu yükünü azaltmak ve kullanıcı deneyimini iyileştirmek için güçlü bir araçtır. Ubuntu 14.04 üzerinde mod_cache, mod_disk_cache ve mod_mem_cache modüllerini doğru bir şekilde yapılandırarak, statik ve dinamik içeriklerinizi etkin bir şekilde önbelleğe alabilirsiniz. Ayrıca, mod_expires ve mod_headers ile istemci tarafı önbelleklemesini optimize etmek, genel web performansınızı daha da artıracaktır. Yapılandırma sırasında dikkatli olmak, önbellek politikalarını doğru belirlemek ve düzenli olarak test etmek, sorunsuz ve yüksek performanslı bir web sunucusu için kritik öneme sahiptir.

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Gönder

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.
Exit mobile version