Чи виділений об'єкт HTML5 localStorage на сторінку / домен? Мені цікаво через те, як я б назвав ключі localStorage. Чи потрібен мені окремий префікс? Або я можу назвати їх все, що хочу?
Чи виділений об'єкт HTML5 localStorage на сторінку / домен? Мені цікаво через те, як я б назвав ключі localStorage. Чи потрібен мені окремий префікс? Або я можу назвати їх все, що хочу?
Відповіді:
Це на домен і порт (ті ж правила сегрегації, що і та ж політика походження ), щоб зробити його на сторінці вам потрібно використовувати ключ, заснований на locationпідході чи іншому підході.
Ви не потребуєте префікса, використовуйте його, якщо він вам потрібен. Крім того, так, ви можете назвати їх все, що завгодно.
protocol://host:portкомбінацією.
Магазини є за походженням , де "походження" те саме, що і для тієї ж політики оригіналу (комбінація схем [ httpпроти httpsтощо], порту та хоста). З специфікації :
Кожен контекст перегляду верхнього рівня має унікальний набір областей зберігання сеансів, по одному для кожного джерела.
Таким чином, сховище http://a.example.comта сховище для них http://b.example.comє окремими (і вони обидва відокремлені http://example.com), оскільки всі вони є різними хостами. Так само http://example.com:80і http://example.com:8080іhttps://example.com все різне походження.
Не існує вбудованого механізму веб-сховища, який би дозволяв одному джерелу отримати доступ до сховища іншого.
Зверніть увагу , що це початок , а НЕ URL, так http://example.com/page1і http://example.com/page2обидва мають доступ до сховища для http://example.com.
Так, кожен домен / піддомен має різні локальні сховища і ви можете зателефонувати за клавішами все, що завгодно (префікс не потрібно).
Щоб отримати ключ, ви можете використовувати метод методу (індекс), наприклад
localStorage.key(0);
Раніше існував об’єкт під назвою globalStorage, де ви могли мати кілька локальних торговельних майданчиків , але його застаріли в специфікаціях
Як зазначають інші, localStorage є унікальним для кожного протоколу, хоста та порту. Якщо ви хочете зручно керувати вашим сховищем за допомогою префіксованих клавіш, я пропоную localDataStorage .
Він не лише допомагає застосувати сегментоване спільне зберігання в одному домені за допомогою префіксації клавіш, але також прозоро зберігає типи даних JavaScript (масив, булевий, дата, плаваючий, цілий, струнний та об’єктний), забезпечує легку обфузацію даних, автоматично стискає рядки та полегшує запит за ключем (ім'ям), а також запитом за значенням (ключ).
[DISCLAIMER] Я автор утиліти [/ DISCLAIMER]
Приклади:
// 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
Як бачите, примітивні значення дотримуються, і ви можете створити кілька примірників, щоб контролювати ваше сховище.