سؤال

هل عزل كائن HTML5 LocalStorage لكل صفحة/مجال؟ أنا أتساءل بسبب كيفية تسمية مفاتيح LocalStorage. هل أحتاج إلى بادئة منفصلة؟ أو هل يمكنني تسميتهم ما أريد؟

هل كانت مفيدة؟

المحلول

إنه لكل مجال (نفس قواعد الفصل مثل نفس سياسة الأصل) ، لجعله لكل صفحة ، يجب عليك استخدام مفتاح بناءً على location, ، أو بعض النهج الأخرى.

لم تكن بحاجة إلى بادئة ، استخدم واحدة إذا كنت في حاجة إليها. أيضا ، نعم ، يمكنك تسمية لهم ما تريد.

نصائح أخرى

المتاجر لكل أصل, ، حيث الأصل هو نفسه بالنسبة ل نفس سياسة الأصل (مزيج من المخطط [http ضد. https, ، وما إلى ذلك] ، المنفذ ، والمضيف). من عند المواصفات:

يحتوي كل سياق تصفح المستوى الأعلى على مجموعة فريدة من مناطق تخزين الجلسة ، واحدة لكل أصل.

وهكذا ، التخزين ل http://a.example.com والتخزين ل http://b.example.com منفصلة (وكلاهما منفصلان عن http://stackoverflow.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 أيضًا.

كما أشار آخرون ، فإن LocalStorage فريد لكل بروتوكول ومضيف ومنفذ. إذا كنت تريد طريقة مفيدة للتحكم في التخزين الخاص بك بمفاتيح مسبوقة ، أقترح LocalDatastorage.

لا يساعد ذلك فقط في فرض التخزين المشترك المجزأة داخل نفس المجال عن طريق مفاتيح البادئة ، بل إنه يخزن أيضًا بشفافية أنواع بيانات JavaScript (الصفيف ، والطلاوى ، والتعويم ، والأشكال العددية ، والسلسلة والكائن) ، ويوفر بيانات خفيفة الوزن ، وضغط السلاسل تلقائيًا ، وضغط السلاسل ، و يسهل الاستعلام عن طريق المفتاح (الاسم) وكذلك الاستعلام بواسطة (مفتاح) القيمة.

إخلاء المسئولية] أنا مؤلف الأداة المساعدة [/إخلاء

أمثلة:

// 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

كما ترون ، يتم احترام القيم البدائية ، ويمكنك إنشاء عدة مثيلات للتحكم في التخزين الخاص بك.

يتوفر في أي مكان في هذا المجال كما اقترح نيك ، كبديل يوجد SessionStorage يعمل بشكل مختلف قليلاً لأنه متميز على نافذة المتصفح نفسها. وهذا يعني أن علامات التبويب الأخرى أو النوافذ على نفس المجال لا يمكنها الوصول إلى نفس النسخة من كائن التخزين.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top