Чи виділений об'єкт 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
Як бачите, примітивні значення дотримуються, і ви можете створити кілька примірників, щоб контролювати ваше сховище.