Expires Headers, sunucular tarafından belirlenmiş dosyaları, tarayıcıların önbelleğinden alınıp alınmaması gerektiğini belirten bir fonksiyondur. Expires Headers’ın amacı, sunuculardan indirilen dosyaların yüklerinin hafifletilmesi ve sunuculara yönelik HTTP isteklerinin azaltılmasıdır.
Bu işlemin önemli bir bileşeni olan web tarayıcıları da, kullanıcının bir web sitesi ziyareti sırasında, gerekli olan dosyaların indirilmesi ve sunucularla kurulan iletişimden sorumludurlar. Tarayıcılar sonraki adımda, web sitesinin görüntülenmesi için mevcut dosyaları derleyerek işleme alırlar.
Web sitelerinde barındırılan grafikler ve içerikler genişledikçe, cihaz ve sunucu arasında gerçekleşen dosya aktarımı da artmaktadır. Add Expires Headers, tarayıcıların en sık kullanılan dosyalarının önbelleğe almasını sağlayan fonksiyon olarak tanımlanabilir. Add Expires Headers çözümü ise “.htaccess” dosyasına belirlenmiş kod dizilimlerinin eklenmesi ile sağlanmaktadır.
Add Expires Headers Neden Önemlidir?
Expires Headers fonksiyonu, web sayfalarının, önbelleğine alınmış sürümlerinin, sunulabilir durumlarını tarayıcı tarafından bilinmesini sağlamaktadır. Add Expires Headers fonksiyonunun avantajları ise aşağıdaki şekilde sıralanabilir.
- Sunucu yüklerinin azaltılması.
- Web sayfalarının yüklenme sürelerinin kısaltılması.
- Maliyet ve fayda oranlarının yükseltilmesi.
- Erişimin kesintisiz sağlanması.
Add Expires Headers, sunucu ve tarayıcı arasında gerçekleşen iletişim süresini kısaltarak, HTTP isteklerini azaltır, buna bağlı olarak da sitelerin performansı olumlu yönde etkilemiş olur. Add Expires Headers ayrıca, önbellek dosyalarının tekrar kullanılması ile kullanıcılar için indirilen dosya miktarlarının azaltılmasını sağlamaktadır. Kullanıcılar, herhangi bir web sitesini ziyaret ettikleri sırada, tarayıcılar siteye ait dosyaları yükleyerek, önbelleklerine kaydederler. Bir kullanıcı aynı web sitesini yeniden ziyaret ettiğinde ise siteye ait dosyaların tekrar yüklenmesine gerek kalmamaktadır. Add Expires Headers, siteye ait dosyaların indirildikten sonra saklanması için tarayıcılara komut iletir. Add Expires Headers kullanımının önemi özetle, bilgisayarlar ile web siteleri arasındaki işlem trafiğini azaltarak, önbellekte depolanmış olan verilerin kullanılmasını amaçlamak şeklinde ifade edilebilir.
Add Expires Headers Çalışma Sistematiği
Expires Headers fonksiyonu, oldukça basit bir çalışma sistematiğine sahiptir. Add Expires Headers ile belirlenmiş bir dosyanın tarayıcının önbelleği içerisinde ne kadar süre boyunca saklanması gerektiği bildirilir. Bu işlem ile kullanıcılar aynı siteyi ziyaret ettiklerinde, tekrar tüm dosyaların yüklenmesini beklemezler. Add Expires Headers fonksiyonu ile web sitelerinin yükleme sürelerinin kısaltılması sağlanmaktadır. Expires Headers başlıkları, belirlenmiş dosyalara ya da dosya türlerine göre ayarlanmaktadır. Tarayıcının web sitesini ziyaret ettiği sırada, belirlenmiş dosyaların ne zaman indirildikleri görülebilmektedir. Add Expires Headers ‘ın kullanım amacı, web sitelerinde sabit olarak kalan öğelerin, son görüntülenme zamanlarının belirlenmesidir. Web sitelerinde genellikle sabit olarak kullanılan formatlar ise aşağıdaki şekilde sıralanmaktadır.
- Images Dosyaları
- Video Dosyaları
- Font Dosyaları
- XML Dosyaları
- Favicon
- JavaScript Dosyaları
- CSS Dosyaları
Add Expires Headers Nasıl Eklenir?
GTmetrix, Google PageSpeed gibi web sitesi ölçüm araçlarında sıkça karşılaşılan sorunlardan biri de Add Expires Headers hatası olmaktadır. Add Expires Headers çözümü, FTP programları yardımıyla, web sitesinin FTP bilgilerine giriş yapılarak, aşağıda eklenen kod dizilimin .htaccess dosyasına yüklenmesi ile sağlanmaktadır.
# Enable expirations
ExpiresActive On
# Default directive
ExpiresDefault “access plus 1 month”
# My favicon
ExpiresByType image/x-icon “access plus 1 year”
# Images
ExpiresByType image/gif “access plus 1 month”
ExpiresByType image/png “access plus 1 month”
ExpiresByType image/jpg “access plus 1 month”
ExpiresByType image/jpeg “access plus 1 month”
# CSS
ExpiresByType text/css “access 1 month”
# Data interchange
ExpiresByType application/json “access plus 0 seconds”
ExpiresByType application/xml “access plus 0 seconds”
ExpiresByType text/xml “access plus 0 seconds”
# Javascript
ExpiresByType application/javascript “access plus 1 year”
# Favicon and cursor images
# HTML components (HTCs)
ExpiresByType text/x-component “access plus 1 month”
# HTML
ExpiresByType text/html “access plus 0 seconds”
# Manifest files
ExpiresByType application/x-web-app-manifest+json “access plus 0 seconds”
ExpiresByType text/cache-manifest “access plus 0 seconds”
# Media
ExpiresByType audio/ogg “access plus 1 month”
ExpiresByType image/gif “access plus 1 month”
ExpiresByType image/jpeg “access plus 1 month”
ExpiresByType image/png “access plus 1 month”
ExpiresByType video/mp4 “access plus 1 month”
ExpiresByType video/ogg “access plus 1 month”
ExpiresByType video/webm “access plus 1 month”
# Web feeds
ExpiresByType application/atom+xml “access plus 1 hour”
ExpiresByType application/rss+xml “access plus 1 hour”
# Web fonts
ExpiresByType application/font-woff “access plus 1 month”
ExpiresByType application/vnd.ms-fontobject “access plus 1 month”
ExpiresByType application/x-font-ttf “access plus 1 month”
ExpiresByType font/opentype “access plus 1 month”
ExpiresByType image/svg+xml “access plus 1 month”
Yukarıda belirtilen kodlarda yer alan “1 month” ya da “1 year” süreleri, web sitesine ait sabit verilerin, son görüntülenme zamanlarını ifade etmektedir.
Önbelleğe Alma Nedir? Neden Önemlidir?
Önbellek, geçici veri kümelerinin depolandığı, yüksek hızdaki katmanlardır. Önbelleğe alma (Caching) ise daha önceden alınmış ya da hesaplanmış olan verilerin, daha verimli kullanılması için oluşturulan fonksiyonlardır. Önbelleğe alma işlemleri, belirlenmiş verilere bir sonraki site ziyareti sırasında, daha hızlı erişilmesini sağlamaktadır. Önbellek içerisinde bulunan veriler RAM gibi donanımlar tarafından saklanır. Verilere erişim sağlamak için, yazılımlar üzerinden bağlantı kurulmaktadır. Önbelleğe alma işlemlerinin temel amacı, depolama alanlarına erişim gereksinimlerini azaltarak, verilere erişim performanslarının arttırılması yönündedir. Önbelleğe alma (Caching) sisteminin birçok avantajı bulunmaktadır. Bunlar;
- Uygulama performanslarının arttırılması.
- Veritabanı maliyetlerinin düşürülmesi.
- Çıkış verilerinin yüklerinin azaltılması.
- Performansın ölçülebilir oranda yükseltilmesi.
- Veritabanına ait bağlantı noktalarının ortadan kaldırılması.
- Veri okuma verimliliğinin yükselmesi olarak belirtilmektedir.
Add Expires Headers fonksiyonu da, tarayıcılarda önbelleğe alınan verilerin, kullanıcılara sunulup sunulmayacağını belirtmektedir. Logolar, tasarım renkleri gibi sabit veriler, Add Expires Headers ile kullanıcıların siteye çok daha hızlı erişmesine ve HTTP isteklerinin azaltılmasına yardımcı olmaktadır.
Verileri Önbelleğe Alma Türleri Nelerdir?
Sunucu yüklerinin azaltılması amacıyla, görsel, nesne, CSS ve JavaScript dosyaları gibi site verilerinin geçici sürelerle saklanma işlemlerine Önbelleğe alma denilmektedir. Önbelleğe alma alternatifleri ise aşağıda sıralanmaktadır.
Veritabanının (Database) Önbelleğe Alınması
Web sitelerinde kullanılan veri tabanlarının hızları ve işlevsellik verimliliği, sitenin genel performansını etkileyen unsurlardandır. Veritabanlarının önbelleğe alınması, uygulama performanslarını etkileyen, arka uçlarda yer alan veritabanlarından sağlanan veri iletişim hızlarını yükseltmektedir. Gecikmeleri minimum seviyeye çeken bu uygulama, web siteleri için uygulanması gereken yöntemlerden biri olarak belirtilmektedir.
İçerik Dağıtım Ağının (CDN) Önbelleğe Alınması
Web sitesi trafiğinin lokasyon bazlı dağıtılması durumlarında, siteye ait altyapının dünyanın her yerinde çoğaltılarak kullanılması her zaman mümkün olmayabilir. CDN (Content Delivery Network), HTML, CSS ve JavaScript gibi sabit içeriklerin önbelleğe alınma işlemlerinde kullanılmaktadır. Bu şekilde, web sitesini ziyaret eden kullanıcıların daha yakın bir konuma taşınarak, bekleme sürelerinin azaltılması hedeflenmektedir.
DNS’leri Önbelleğe Alma
İnternet üzerinde gerçekleştirilen Domain sorguları sırasında, tanımlı Domaine bağlı IP adresinin çözülmesi için, DNS önbellek sunucuları üzerinden sorgu yapılmaktadır. DNS önbelleği, ISP (Internet Service Provider) İnternet Servis Sağlayıcı ve DNS sunucuları aracılığıyla, işletim sistemleri de dahil, pek çok farklı düzeyde işlem görmektedir.
Oturum Yönetimlerinin Önbelleğe Alınması
HTTP oturumları, web sitesinin kullanıcılarının giriş bilgilerini, daha önce görüntülenme süreçlerini, alışveriş izlerini kapsayan bir dizi bilgiyi içermektedir. Kullanıcılara ait tercihlerin bilinmesi ve hatırlanması, kullanıcı deneyimini yükselterek, HTTP oturumlarını yönetmeyi ve kullanıcının daha fazla memnun kalmasını sağlamaktadır.
API lerin Önbelleğe Alınması
Web sitelerinin birçoğunun API (Application Programming Interface) yani Uygulama Programlama Arayüzü üzerinde kurulduğu görülmektedir. API’ler, kullanıcıların istekleri doğrultusunda, veritabanları ile istek bağlantıları kurmaktadır. API sonuçlarını önbelleğe alarak, kullanıcı tarafına döndürülmesi, veritabanı yüklerini azaltmak da, hızın ve performansın artmasını sağlamaktadır.
Cloud Sistemlerini Önbelleğe Alma
Cloud (Bulut) sistemlerinde barındırılan uygulamaların, bir takım verilere erişim için kuruma ait veritabanına ulaşması gerekmektedir. Kuruma ait verilerin, bulut sistemlerinde önbelleğe alınması ise veri akışının genel performansını arttırmaktadır.
Web Önbelleğe Alma
Bir web sitesini ziyaret eden kullanıcı için, içerikler sunulurken, görüntülerin, HTML belgelerinin, videoların ve diğer tüm verilerin önbelleğe alınması ile disklerin okunması ve sunucuların yüklerinin azaltılması mümkün olmaktadır. Hem sunucu hem de kullanıcı taraflı önbellekleme işlemlerinde, web sunucu yanıtları tutularak, sunucuların gecikmelerinin engellenmesi için Proxy ’lerden yararlanılmaktadır. Kullanıcı taraflı önbellek işlemlerinde ise daha önce ziyaret edilen web sayfaları önbelleğe aktarılmaktadır.
Genel Önbellek
Verilere ya da veri gruplarına bellekten erişim sağlamak, SSD (Katmanlı Hal Sürücüsü) üzerinden ve disklerden veri erişimine göre daha hızlı yapılmaktadır. Bu sistem, bağımsız şekilde işleyen veritabanı olarak, bellek içerisindeki anahtarlama / değerleme depolarını kullanarak gerçekleştirilmektedir. Sistem ile önbellek içerisinde yer alan veriler kullanılırken hızın artması, maliyetlerin düşürülmesi, verimliliğin yükseltilmesi sağlanmaktadır.
Entegre Önbellek
Daha sık erişim sağlanan verilerin, kaynak veritabanlarından otomatik şekilde önbelleğe alınması, entegre önbellek ile mümkün olmaktadır. Veritabanına gelen taleplerin yanıtlanması için entegre önbellek kullanılır ve istek gecikmelerinin önüne geçilir. Veritabanı CPU ve bellek kullanımları minimum seviyeye çekilerek, veritabanı performansı yükseltilir.
Sık Karşılaşılan Hatalar ve Çözümleri
- Serve Resources From a Consistent URL Çözümü
- Use a Content Delivery Network (CDN) Çözümü
- Enable Keep-Alive Çözümü
- Combine Images Using CSS Sprites Çözümü
- Add Expires Headers Çözümü
- Use Cookie-free Domains Çözümü
- Make Fewer HTTP Requests Çözümü
- Defer Parsing of JavaScript Çözümü
- Serve Scaled images Çözümü
- Enable Gzip Compression Çözümü