HTML5 Yerel depolama ve Oturum depolama alanı karşılaştırması


561

Kalıcı olmamanın ve yalnızca geçerli pencerenin kapsamının dışında olmasının yanı sıra, Yerel Depolama Üzerinden Oturum Depolama Alanının herhangi bir faydası (performans, veri erişimi, vb.) Var mı?


15
@robert - Yanlış olduğuna inanıyorum. Gönderen w3.org/TR/webstorage sessionStorage her tarayıcı sekmesi / penceresine tektir yani "üst düzey tarama bağlamında" de kapsamlı. Bununla birlikte, localStorage kaynağa dahil edilir, yani aynı kaynaktan tüm sayfalarda paylaşılır.
broofa


Yanıtlar:


812

localStorage ve oturumStorage her ikisi de Depolama genişletir . Aralarında amaçlanan "kalıcı olmama" dışında hiçbir fark yoktur sessionStorage.

Yani, depolanan veriler localStorage açıkça silinene kadar devam eder . Yapılan değişiklikler kaydedilir ve siteye yapılan mevcut ve gelecekteki tüm ziyaretler için kullanılabilir.

İçin sessionStorage, değişiklikler yalnızca sekme başına kullanılabilir. Yapılan değişiklikler kaydedilir ve kapatılana kadar o sekmedeki geçerli sayfa için kullanılabilir . Kapatıldıktan sonra, saklanan veriler silinir.


17
burada yararlı bulabileceğiniz daha geniş bir tartışma var: stackoverflow.com/questions/19867599/…
Ed Sykes

13
http altında depolanan bazı verileri
Mark Thien

i Chrome v41.x üzerinde bu test ve https ile ilgili yukarıdaki ifade doğru değil gibi görünüyor: localStorage depolanan verilerini korur.
CCC

36
SessionStorage sayfaların yeniden yüklenmesi ve geri yüklenmesi ile hayatta kalır, ancak yeni bir sekme / pencere açmak yeni bir oturum başlatır.
Patrick

160

Tek fark, localStorage'ın farklı bir sona erme süresine sahip olması, sessionStorageyalnızca onu oluşturan pencere açıkken ve erişilebilir olmasıdır.
localStoragesiz silene veya kullanıcı silene kadar sürer.
Kullanmak istediğiniz bir giriş adı ve şifreyi kaydetmek istediğini Diyelim sessionStorageüzerinde localStoragegüvenlik nedeniyle (yani. Daha sonra kendi hesabınıza ulaşma başka bir kişi).
Ancak bir kullanıcının ayarlarını makinelerine kaydetmek isterseniz, büyük olasılıkla istersiniz localStorage. Neticede:

localStorage- uzun süreli kullanım için.
sessionStorage- değişen veya geçici bir şeyi saklamanız gerektiğinde kullanın


103

Yerel ve oturum depolama alanı arasındaki farkları anlamaya yardımcı olabilecek diğer birkaç nokta

  1. Hem yerel depolama hem de oturum depolama alanı, belgenin kökenine göre kapsamlıdır;

    https://mydomain.com/
    http://mydomain.com/
    https://mydomain.com:8080/

    URL Yukarıdakilerin hepsi olacak değil aynı depoyu paylaşırlar. (Web sayfasının uyarı yolu web depolamayı etkilemez)

  2. Oturum depolama hatta farklı sekmelerde açık aynı kökenli politikası, iki farklı sekmelerde yüzden aynı web sayfası açıkken belge için farklı olamaz aynı oturum depolama paylaşır.

  3. Hem yerel hem de oturum depolaması tarayıcı satıcıları tarafından da kapsamlandırılır . IE tarafından kaydedilen depolama verileri Chrome veya FF tarafından okunamaz.

Bu yardımcı olur umarım.


3
Hayır, aynı oturum http ve https arasındaki depolama payı ancak localStorage değil.
Shahdat

5
Önce sessionStorage'ı https kaynağında ayarlarsanız,
http'de

4
@Shahdat, "https'de kullanılamayacak" (yani dikkat edin) demek istediniz?
Daniel Werner

3
@DanielWerner evet, http'de sessionStore oluşturursanız, https'de kullanılamaz.
Shahdat

28

Arasındaki temel fark localStorageve sessionStorageolmasıdır sessionStoragesekmesi başına benzersizdir. Sekmeyi kapatırsanız sessionStoragesilinir, localStoragedeğil. Ayrıca sekmeler arasında iletişim kuramazsınız :)

Bir başka ince bir fark Safari'de (örneğin 8.0.3) olan localStorage2551 k karakter sınırı vardır ama sessionStoragesahip sınırsız depolama

Chrome (V43) üzerinde hem localStorageve sessionStorage5101 k karakterleri (normal / gizli modda arasında hiçbir fark) ile sınırlıdır

Firefox üzerinde hem localStorageve sessionStorage5120 k karakterleri (normal / özel mod arasında hiçbir fark) ile sınırlıdır

Hız farkı yok :)

Mobil Safari ve Mobil Chrome ile ilgili bir sorun var, Özel Mod Safari ve Chrome'da maksimum 0KB alan var


1
5101 k karakterle sınırlı mı? yani .. 5.101 milyon karakter?
Zze

@Zze Evet, 1 karakter genellikle 1 bayttır, bu nedenle 5 milyon karakter 5Mb depolama alanına sahiptir.
Basim Khajwal

@BasimKhajwal 5MB. Baytlar, bitler değil.
Yeti

Bahsettiklerinize kaynak ekleyebilir misiniz?
Mukus

@Mukus, kaynak yok, testleri kendim çalıştırdım ve localStorage'a sahip olmak için Özel Mod Safari ile ilgili bir sorun yaşadım, ancak orada yer yok ve çoklu dolum localStorage var olduğu için tetiklemiyordu, ancak komut dosyası depolanamadığı için başarısız oldu orada herhangi bir şey. Bu aracı kullanarak da test edebilirsiniz - dev-test.nemikor.com/web-storage/support-test
Eek

17

sessionStoragelocalStorageyalnızca bir oturum için verileri depolaması dışında kullanıcıyla aynıdır ve kullanıcı onu oluşturan tarayıcı penceresini kapattığında kaldırılır.


10

performans açısından, (kaba) ölçümlerim 1000 yazma ve okumada hiçbir fark bulamadı

akıllıca, sezgisel olarak localStore oturumu kapatılmış gibi görünebilir, ancak somut bir kanıt yok - belki başka biri yapar?

işlevsel olarak digitalFresh ile uyumlu


1
sayfa yükleme performansı ile ilgili: Hem sessionStorage hem de localStorage başlatılır ve sayfa yükleme oluşturma döngüsünün dışında doldurulur. Bu nedenle, ilk sayfa yükleme süresindeki geçiş ücreti tarayıcı içinden ölçülemez.
Mirko

6

Oturum depolama alanı ve yerel depolama aynı davranıştadır, ancak yerel depolama alanı, kullanıcı önbelleği ve çerezleri silene kadar verileri depolar ve oturum depolama verileri, biz kapatana kadar i, e oturumunu kapatana kadar sistemde kalır. oturum depolama alanı oluşturuldu penceresi.


5

Bence, oturum depolamanın yerel depolamaya göre avantajı, Firefox'ta sınırsız kapasiteye sahip olması ve oturumdan daha uzun sürmeyecek olmasıdır. (Tabii ki hedefinizin ne olduğuna bağlı.)


2

Yerel depolama: Kullanıcı bilgi verilerini son kullanma tarihi olmadan saklar Bu kullanıcı tarayıcı pencerelerini kapattığında gün, hafta, ay ve yıl için mevcut olacak bu veriler silinmeyecektir.

//Set the value in a local storage object
localStorage.setItem('name', myName);

//Get the value from storage object
localStorage.getItem('name');

//Delete the value from local storage object
localStorage.removeItem(name);//Delete specifice obeject from local storege
localStorage.clear();//Delete all from local storege

Oturum Depolaması: Bir web kullanıcısı tarafından tarayıcı pencereleri kapatıldığında tüm pencereleri silmesi dışında yerel depolama tarihi ile aynıdır.

//set the value to a object in session storege
sessionStorage.myNameInSession = "Krishna";

Devamını Oku Tıklayın


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.