HTML5 localStorage nesnesi sayfa / alan adı başına izole mi? LocalStorage anahtarlarını nasıl isimlendireceğimi merak ediyorum. Ayrı bir ön eke ihtiyacım var mı? Yoksa ne istersem onları adlandırabilir miyim?
HTML5 localStorage nesnesi sayfa / alan adı başına izole mi? LocalStorage anahtarlarını nasıl isimlendireceğimi merak ediyorum. Ayrı bir ön eke ihtiyacım var mı? Yoksa ne istersem onları adlandırabilir miyim?
Yanıtlar:
Bu, alan adı ve bağlantı noktası ( aynı başlangıç politikasıyla aynı ayırma kuralları ), sayfa başına yapmak için location
, veya başka bir yaklaşıma dayalı bir anahtar kullanmanız gerekir .
Sen yok gerek sen olsa gerekiyorsa bir önek kullanın tane. Ayrıca, evet, istediğinizi adlandırabilirsiniz.
protocol://host:port
kombinasyon için benzersizdir .
Mağazalar, "orijin" in Aynı Orijin Politikası (şema [ vs. vs.), bağlantı noktası ve ana bilgisayar kombinasyonu) ile aynı olduğu her bir orijin için geçerlidir . Gönderen spec :http
https
Her bir üst düzey gözatma bağlamında, her kaynak için bir tane olmak üzere benzersiz bir oturum depolama alanı kümesi bulunur.
Böylece, depolama http://a.example.com
ve depolama için http://b.example.com
ayrı ayrı (ve her ikisi de ayrıdır http://example.com
), çünkü bunların hepsi farklı ana makinelerdir. Benzer şekilde http://example.com:80
ve http://example.com:8080
ve https://example.com
hepsi farklı kökenlidir.
Web deposunda yerleşik olarak bir kaynağın diğerinin deposuna erişmesine izin veren bir mekanizma yoktur.
'S geldiğini hatırlatırız kökeni , URL'yi değil, bu yüzden http://example.com/page1
ve http://example.com/page2
depolama erişimi hem http://example.com
.
Evet, her alanın / alt alanın farklı bir localStorage'ı vardır ve anahtarları istediğiniz gibi çağırabilirsiniz (önek gerekli değildir).
Anahtar almak için aşağıdaki yöntem anahtarını (index) kullanabilirsiniz.
localStorage.key(0);
Daha önce birden fazla localStorage'a sahip olabileceğiniz globalStorage adlı bir nesne vardı , ancak teknik özelliklerden kaldırıldı
Diğerlerinin de belirttiği gibi, localStorage protokol, ana bilgisayar ve bağlantı noktası başına benzersizdir. Önbelleğe alınmış anahtarlarla depolama alanınızı kontrol etmenin kullanışlı bir yolunu istiyorsanız, localDataStorage'ı öneririm .
Sadece anahtarları ön ekleyerek segmentli paylaşılan depolamayı aynı alan içinde zorunlu kılmakla kalmaz, aynı zamanda javascript veri türlerini (Dizi, Boolean, Tarih, Kayan Nokta, Tamsayı, Dize ve Nesne) şeffaf olarak saklar, hafif veri gizleme sağlar, dizeleri otomatik olarak sıkıştırır ve anahtar (isim) ile sorguyu ve (anahtar) değeri ile sorguyu kolaylaştırır.
[YASAL UYARI] Ben yardımcı programın yazarı benim [/ YASAL UYARI]
Örnekler:
// instantiate our first storage object
// internally, all keys will use the specified prefix, i.e. passphrase.life
var localData = localDataStorage( 'passphrase.life' );
localData.set( 'key1', 'Belgian' )
localData.set( 'key2', 1200.0047 )
localData.set( 'key3', true )
localData.set( 'key4', { 'RSK' : [1,'3',5,'7',9] } )
localData.set( 'key5', null )
localData.get( 'key1' ) --> 'Belgian'
localData.get( 'key2' ) --> 1200.0047
localData.get( 'key3' ) --> true
localData.get( 'key4' ) --> Object {RSK: Array(5)}
localData.get( 'key5' ) --> null
// instantiate our second storage object
// internally, all keys will use the specified prefix, i.e. prismcipher.com
var localData2 = localDataStorage( 'prismcipher.com' );
localData2.set( 'key1', 123456789 ) // integer
localData2.get( 'key1' ) --> 123456789
Gördüğünüz gibi, ilkel değerlere saygı duyulur ve depolamanızı kontrol etmek için birkaç örnek oluşturabilirsiniz.
Nick'in önerdiği gibi bu alanda herhangi bir yerde kullanılabilir, alternatif olarak sessionStorage tarayıcı penceresinin kendisinden farklı olduğu için biraz farklı çalışır. Diğer bir deyişle, aynı etki alanındaki diğer sekmeler veya pencereler, depolama nesnesinin aynı kopyasına erişemez.