JavaScript ile Tarayıcı Yerel Depolama Kullanımı Nasıl Yapılır?
Modern web uygulamaları geliştirirken, kullanıcı verilerini sunucuya gitmeden tarayıcı üzerinde tutmak hem performans hem de kullanıcı deneyimi açısından kritiktir. JavaScript ile tarayıcı yerel depolama kullanımı, özellikle oturum yönetimi, kullanıcı tercihleri ve çevrimdışı çalışma senaryolarında temel bir yetkinliktir. Bu rehberde, Web Storage API'nin sunduğu araçları profesyonel standartlarda nasıl kullanacağınızı adım adım öğreneceksiniz.
Bu makale, web geliştirme dünyasına yeni adım atan veya tarayıcı depolama yöntemlerini modern standartlarda uygulamak isteyen geliştiriciler için hazırlanmıştır. 2026 yılı itibarıyla tarayıcıların sunduğu localStorage ve sessionStorage mekanizmalarının farklarını, güvenlik sınırlarını ve en iyi uygulama pratiklerini detaylandıracağız.
Gereksinimler ve Ön Hazırlık
Bu rehberdeki kod örneklerini çalıştırmak için herhangi bir ek kütüphane kurulumuna ihtiyacınız yoktur. Modern bir web tarayıcısı (Chrome, Firefox, Edge veya Safari) ve temel düzeyde JavaScript bilginizin olması yeterlidir.
- Geliştirici Araçları: Tarayıcınızın "Geliştirici Araçları" (F12) panelini açarak "Application" veya "Storage" sekmesini kullanmayı öğrenmek, verilerinizi izlemek için en iyi yöntemdir.
- Sürüm Bilgisi: Tüm örnekler ES6+ standartlarına uygun olarak yazılmıştır.
localStorage ve sessionStorage Arasındaki Farklar
Tarayıcı depolama yöntemlerini doğru seçmek, uygulamanızın ömrünü ve verinin kalıcılığını belirler. Aşağıdaki tablo, bu iki temel yöntem arasındaki farkları özetlemektedir.
| Özellik | localStorage | sessionStorage |
|---|---|---|
| Veri Ömrü | Siz silene kadar kalıcıdır. | Sekme/pencere kapanınca silinir. |
| Erişim | Aynı origin (domain) içindeki tüm sekmeler. | Sadece oluşturulduğu sekme. |
| Kapasite | Genellikle 5MB - 10MB arası. | Genellikle 5MB. |
Veri Kaydetme ve Okuma İşlemleri
JavaScript ile veri depolamanın en temel iki metodu setItem ve getItem fonksiyonlarıdır. Veriler her zaman "anahtar-değer" (key-value) çiftleri şeklinde saklanır ve değerler mutlaka string (metin) formatında olmalıdır.
// Veri kaydetme
localStorage.setItem('kullaniciAdi', 'AhmetYilmaz');
// Veri okuma
const isim = localStorage.getItem('kullaniciAdi');
console.log('Kaydedilen isim:', isim);
Yukarıdaki örnekte, localStorage nesnesine bir anahtar tanımladık. getItem metodu ile bu veriyi geri çağırdık. Eğer belirtilen anahtar yoksa, fonksiyon null değerini döndürür.
Karmaşık Verileri JSON ile Saklama
localStorage sadece metin verilerini saklayabildiği için, JavaScript nesnelerini (object) veya dizilerini (array) doğrudan kaydedemezsiniz. Bu noktada JSON.stringify() ve JSON.parse() metodlarını kullanmanız gerekir.
const kullaniciAyarlari = {
tema: 'karanlik',
dil: 'tr',
bildirimler: true
};
// Nesneyi stringe çevirip kaydetme
localStorage.setItem('ayarlar', JSON.stringify(kullaniciAyarlari));
// Stringi geri nesneye çevirme
const kaydedilenAyarlar = JSON.parse(localStorage.getItem('ayarlar'));
console.log(kaydedilenAyarlar.tema); // Çıktı: karanlik
Bu yöntem, uygulama ayarlarını veya sepet verilerini saklamak için standart yaklaşımdır. Veriyi okurken JSON.parse kullanmadan önce verinin boş olup olmadığını kontrol etmek hata riskini azaltır.
Veri Silme ve Depolama Yönetimi
Bazen belirli bir veriyi silmeniz veya tüm depolama alanını temizlemeniz gerekebilir. Bunun için removeItem ve clear metodlarını kullanırız.
// Tek bir veriyi silme
localStorage.removeItem('kullaniciAdi');
// Tüm depolama alanını temizleme
localStorage.clear();
removeItem ile sadece belirttiğiniz anahtara sahip veri silinir. clear komutu ise o domain'e ait tüm yerel depolama verilerini tek seferde siler; bu nedenle dikkatli kullanılmalıdır.
Güvenlik Uyarısı: Tarayıcı yerel depolama alanında asla şifre, kredi kartı bilgisi veya hassas kişisel veriler saklamayın. localStorage, XSS (Cross-Site Scripting) saldırılarına karşı savunmasızdır; aynı domain üzerinde çalışan herhangi bir kötü niyetli script bu verilere erişebilir.
Tarayıcı Depolama Kapasitesini Kontrol Etme
Çok fazla veri sakladığınızda QuotaExceededError hatası alabilirsiniz. Uygulamanızın ne kadar alan kullandığını test etmek için basit bir döngü kurabilirsiniz.
try {
localStorage.setItem('test', 'veri');
} catch (e) {
if (e.name === 'QuotaExceededError') {
console.error('Depolama alanı doldu!');
}
}
Bu yapı, kullanıcıya hata mesajı göstermek veya eski verileri temizlemek için harika bir "hata yakalama" (error handling) mekanizmasıdır.
Sıkça Sorulan Sorular
localStorage verileri ne zaman silinir?
Kullanıcı tarayıcı geçmişini temizlemediği veya siz kod içerisinde removeItem veya clear metotlarını kullanmadığınız sürece veriler silinmez.
sessionStorage ile localStorage arasındaki temel fark nedir?
sessionStorage verileri tarayıcı sekmesi kapatıldığında otomatik olarak silinir, localStorage ise kalıcıdır.
Tarayıcı depolamada dosya saklayabilir miyim?
Hayır, doğrudan dosya saklanmaz. Ancak dosyaları Base64 formatına çevirerek metin olarak depolayabilirsiniz, fakat bu performans sorunlarına yol açabilir.
Kullanıcı çerezleri kapattığında depolama çalışır mı?
Evet, Web Storage API çerezlerden (cookies) bağımsız çalışır ve genellikle çalışmaya devam eder.
Veri güncellemeyi nasıl yaparım?
Aynı anahtarı (key) kullanarak setItem metodunu tekrar çağırmanız yeterlidir; eski değerin üzerine yeni değer yazılacaktır.
Kod Güvenliği Sorumluluk Reddi: Bu makaledeki kodlar eğitim amaçlıdır. Üretim ortamında (production) kullanacağınız tüm verileri sunucu tarafında doğrulamalı ve tarayıcı depolama alanına asla güvenli olmayan veriler kaydetmemelisiniz.
Tarayıcı Depolama Alanında Hata Ayıklama ve Geliştirici Araçları
Geliştirme sürecinde localStorage veya sessionStorage verilerini anlık olarak takip etmek, hataları hızlıca çözmenizi sağlar. Modern tarayıcıların (Chrome, Firefox, Edge) sunduğu "Geliştirici Araçları" (F12), depolama alanını yönetmek için en güçlü yardımcıdır.
Application Sekmesi ile Veri Yönetimi
Tarayıcınızda F12 tuşuna basarak Geliştirici Araçları'nı açın ve Application (Uygulama) sekmesine gidin. Sol taraftaki menüde Storage başlığı altında Local Storage ve Session Storage seçeneklerini göreceksiniz. Burada:
- Mevcut tüm anahtar-değer çiftlerini listeleyebilir,
- Verileri çift tıklayarak manuel olarak düzenleyebilir,
- Sağ tıklayarak tek bir öğeyi silebilir veya Clear All diyerek tüm alanı temizleyebilirsiniz.
Konsol Üzerinden Hızlı Denetim
Kodunuzun çalışma anında verileri kontrol etmek için doğrudan tarayıcı konsolunu kullanabilirsiniz. Örneğin, tüm depolama alanını temizlemek veya belirli bir değeri okumak için şu komutları kullanabilirsiniz:
// Tüm localStorage'ı temizle
localStorage.clear();
// Belirli bir key'in değerini konsola yazdır
console.log("Kullanıcı Tercihi:", localStorage.getItem("theme"));
// Depolama alanındaki anahtar sayısını kontrol et
console.log("Toplam kayıt sayısı:", localStorage.length);
Performans ve Güvenlik İçin İleri İpuçları
Yerel depolama alanı senkron (synchronous) çalışır; yani ana iş parçacığını (main thread) bloke edebilir. Çok büyük verileri sürekli okuyup yazmak, özellikle düşük donanımlı cihazlarda arayüzün donmasına neden olabilir. Bu durumu yönetmek için şu stratejileri izlemelisiniz:
Veri Boyutunu Optimize Etme
Depolama alanınız yaklaşık 5MB ile sınırlıdır. Gereksiz verileri saklamaktan kaçınmalı ve büyük nesneleri JSON formatında saklamadan önce mümkünse sıkıştırmalısınız. Ayrıca, verileri okurken her seferinde JSON.parse() kullanmak yerine, veriyi bir kez bir değişkende (state) tutarak bellekten okumayı tercih edin.
Uyarı: localStorage verileri tarayıcıda düz metin olarak saklanır. Kullanıcılar veya tarayıcıya erişimi olan kötü niyetli scriptler (XSS saldırıları) bu verilere kolayca ulaşabilir. Bu nedenle asla şifre, kredi kartı bilgisi veya kişisel kimlik verisi gibi hassas bilgileri localStorage içinde tutmayın.
Hata Yönetimi (Try-Catch Kullanımı)
Kullanıcı tarayıcı ayarlarından "Çerezleri ve site verilerini engelle" seçeneğini işaretlemişse veya depolama alanı dolmuşsa, setItem metodu hata fırlatabilir. Bu durumun uygulamanızı çökertmemesi için her zaman hata yakalama blokları kullanın:
function safeSave(key, value) {
try {
localStorage.setItem(key, JSON.stringify(value));
} catch (e) {
if (e.name === 'QuotaExceededError') {
console.error("Depolama alanı doldu!");
} else {
console.error("Depolama hatası:", e.message);
}
}
}
// Kullanımı
safeSave("user_settings", { theme: "dark", notifications: true });
Bu yaklaşım, uygulamanızın beklenmedik durumlarda bile kararlı çalışmasını sağlar ve kullanıcı deneyimini korur.
Sonuç
JavaScript ile tarayıcı yerel depolama kullanımı, modern web geliştirmede kullanıcı deneyimini iyileştiren vazgeçilmez bir araçtır. localStorage ve sessionStorage arasındaki farkları bilmek, verilerinizi nerede ve nasıl saklayacağınız konusunda doğru kararlar vermenizi sağlar. Bu temel bilgileri öğrendikten sonra, bir sonraki adım olarak IndexedDB gibi daha büyük veriler için kullanılan gelişmiş depolama çözümlerini inceleyebilirsiniz.


Yorumlar (0)
Yorum Yaz