Blog / Makaleler

Siteniz için .htaccess yardımı ile önbellekleme

Bu yazı 2016 yılından. Anlatılan sürümler, fiyatlar ve adresler o günden bu yana değişmiş olabilir.

Sitenizdeki resimlerin, stil ve script dosyalarının her ziyarette baştan yüklenmesi hem sitenin geç açılmasına hem de ziyaretçinin boşuna veri harcamasına yol açar. Önbellekleme (cache) sayesinde bu dosyalar ziyaretçinin tarayıcısında saklanır; ikinci kez geldiğinde tekrar indirilmez, site çok daha hızlı açılır.

Bunu .htaccess dosyasına birkaç satır ekleyerek yapabiliriz. Hangi dosya türlerinin ne kadar süre saklanacağını biz belirliyoruz. (Bu yöntem Apache sunucularda ve mod_expires modülü açıkken çalışır; çoğu paylaşımlı hostingde zaten açıktır.)

.htaccess dosyanıza ekleyeceğimiz kod şöyle:

Kod
<IfModule mod_expires.c>
  ExpiresActive On

  # Resimler ve fontlar: uzun süre saklanabilir
  ExpiresByType image/jpeg "access plus 1 year"
  ExpiresByType image/png  "access plus 1 year"
  ExpiresByType image/gif  "access plus 1 year"
  ExpiresByType image/webp "access plus 1 year"
  ExpiresByType image/svg+xml "access plus 1 year"
  ExpiresByType image/x-icon "access plus 1 year"
  ExpiresByType font/woff2 "access plus 1 year"

  # Stil ve scriptler: daha kısa tutun (aşağıdaki nota bakın)
  ExpiresByType text/css "access plus 1 month"
  ExpiresByType application/javascript "access plus 1 month"
</IfModule>

Burada her satır bir dosya türünü ve ne kadar süre saklanacağını söylüyor. İstediğiniz türü ekleyip çıkarabilir, süreleri değiştirebilirsiniz.

Önemli: Resimler için 1 yıl gayet mantıklı, çünkü bir resmi genelde değiştirmezsiniz. Ama stil (CSS) ve script (JS) dosyalarına uzun süre vermeyin. Çünkü sitenizin tasarımını güncellediğinizde, tarayıcısında eski dosyayı önbelleğe almış ziyaretçi değişikliği göremez, aylarca eski halini görmeye devam eder. Bunun en temiz çözümü dosya adının sonuna sürüm eklemektir (stil.css?v=2 gibi); sürümü değiştirdiğinizde tarayıcı dosyayı yeni sanıp tekrar indirir. Bu yüzden CSS/JS'yi yukarıda daha kısa tuttum.

Bu yazıyı paylaşXFacebook