লোকালস্টোরেজ এবং ইনডেক্সডডিবি এইচটিএমএল 5-তে ডেটা অফলাইনে সঞ্চয় করার জন্য ব্যবহৃত হয়। তাদের মূল পার্থক্যগুলি কী কী এবং কোনটি কোন পরিস্থিতিতে ভাল?
লোকালস্টোরেজ এবং ইনডেক্সডডিবি এইচটিএমএল 5-তে ডেটা অফলাইনে সঞ্চয় করার জন্য ব্যবহৃত হয়। তাদের মূল পার্থক্যগুলি কী কী এবং কোনটি কোন পরিস্থিতিতে ভাল?
উত্তর:
পৃষ্ঠতলে দুটি প্রযুক্তি সরাসরি তুলনামূলক বলে মনে হতে পারে, তবে আপনি যদি তাদের সাথে কিছুটা সময় ব্যয় করেন তবে শীঘ্রই বুঝতে পারবেন যে তারা তা নয়। এগুলি একই ধরণের লক্ষ্য, ক্লায়েন্টের সাইড স্টোরেজ অর্জনের জন্য তৈরি করা হয়েছিল, তবে তারা উল্লেখযোগ্যভাবে ভিন্ন দৃষ্টিকোণ থেকে হাতের কাজটির দিকে এগিয়ে যায় এবং বিভিন্ন পরিমাণের ডেটা দিয়ে সেরা কাজ করে।
লোকালস্টোরেশন, বা আরও সঠিকভাবে ওয়েব স্টোরেজ , অল্প পরিমাণে ডেটার জন্য ডিজাইন করা হয়েছিল। এটি মূলত একটি স্ট্রিংগুলির মূল কী - মান স্টোরেজ , সাধারণ সিঙ্ক্রোনাস এপিআই সহ। শেষ অংশটি কী। যদিও অ্যাসিঙ্ক্রোনাস ডিওএম স্টোরেজ নিষিদ্ধ করে এমন স্পেসিফিকেশনে কিছুই নেই তবে বর্তমানে সমস্ত বাস্তবায়ন সমকালীন (যেমন ব্লক করার অনুরোধগুলি)। এমনকি যদি আপনি বৃহৎ পরিমাণে ডেটা ব্যবহারের জন্য একটি নিষ্কলুষ কী - মান সঞ্চয় ব্যবহার করতে আপত্তি না করেন তবে আপনার ক্লায়েন্টরা আপনার অ্যাপ্লিকেশনটি লোড হওয়ার জন্য চিরকাল অপেক্ষা করতে ভেবে দেখবে।
অন্যদিকে, indexedDB উল্লেখযোগ্য পরিমাণে বৃহত পরিমাণে ডেটা নিয়ে কাজ করার জন্য ডিজাইন করা হয়েছিল। প্রথমত, তত্ত্ব হিসাবে, এটি উভয় একটি সিঙ্ক্রোনাস এবং একটি অ্যাসিঙ্ক্রোনাস এপিআই সরবরাহ করে। বাস্তবে, যাইহোক, সমস্ত বর্তমান বাস্তবায়ন অ্যাসিনক্রোনাস, এবং অনুরোধগুলি ব্যবহারকারী ইন্টারফেসটিকে লোড করা থেকে আটকাবে না। অতিরিক্ত হিসাবে, সূচকযুক্ত ডিবি, যেমন নামটি প্রকাশ করে, সূচি সরবরাহ করে । আপনি আপনার ডাটাবেসে প্রাথমিক জিজ্ঞাসা চালাতে পারেন এবং নির্দিষ্ট কী ব্যাপ্তিতে তাদের কীগুলি অনুসন্ধান করে রেকর্ডগুলি আনতে পারেন । indexedDB এছাড়াও লেনদেন সমর্থন করে এবং সহজ প্রকারের (যেমন তারিখ) সরবরাহ করে।
এই মুহুর্তে, ইনডেক্সডডিবি সর্বকালের প্রতিটি পরিস্থিতির জন্য সর্বোত্তম সমাধান বলে মনে হতে পারে। তবে এর সমস্ত বৈশিষ্ট্যের জন্য একটি জরিমানা রয়েছে: ডিওএম স্টোরেজের সাথে তুলনা করে, এর এপিআই বেশ জটিল। indexedDB ডাটাবেস ধারণাগুলির সাথে একটি সাধারণ পরিচিতি অনুমান করে, ওয়েব স্টোরেজ সহ আপনি ডানদিকে ঝাঁপিয়ে পড়তে পারেন you আপনি যদি কখনও কুকি নিয়ে কাজ করেন তবে ওয়েব স্টোরেজ সহ আপনার কোনও সমস্যা হবে না। এছাড়াও, সাধারণভাবে ওয়েব স্টোরেজ (এবং আরও কোড = আরও বেশি বাগ) এর মতো একই ফলাফল অর্জনের জন্য আপনাকে সূচিযুক্ত ডিবিতে আরও কোড লিখতে হবে। তদ্ব্যতীত, ব্রাউজারগুলি যা এটি সমর্থন করে না তাদের জন্য ওয়েব স্টোরেজ অনুকরণ করা তুলনামূলকভাবে সহজ। ইনডেক্সডডিবি দিয়ে, কাজটি তার উপযুক্ত হবে না। শেষ অবধি, আপনি ইনডেক্সডডিবিতে ডুব দেওয়ার আগে আপনার প্রথমে কোটা API এ একবার দেখা উচিত ।
দিনের শেষে, আপনি যদি আপনার অ্যাপ্লিকেশনটিতে ওয়েব স্টোরেজ বা সূচকযুক্ত ডিবি, বা উভয়ই ব্যবহার করেন তবে এটি সম্পূর্ণরূপে আপনার। ওয়েব স্টোরেজটির জন্য ভাল ব্যবহারের ক্ষেত্রে হ'ল সহজ সেশন ডেটা, উদাহরণস্বরূপ কোনও ব্যবহারকারীর নাম এবং আপনার আসল ডাটাবেসে আপনাকে কিছু অনুরোধ সংরক্ষণ করা save অন্যদিকে ইনডেক্সডিবির অতিরিক্ত বৈশিষ্ট্যগুলি আপনাকে অফলাইনে কাজ করার জন্য আপনার অ্যাপ্লিকেশনটির জন্য প্রয়োজনীয় সমস্ত ডেটা সংরক্ষণ করতে সহায়তা করতে পারে।
@ অ্যানিস উত্তরটি দুর্দান্ত। কেবল কয়েকটি জিনিস যুক্ত করতে চাই।
পরিষেবা ওয়ার্কার্সের মতো কয়েকটি পরিস্থিতিতে আপনি ব্লকিং কোড ব্যবহার করতে পারবেন না, সুতরাং আপনি লোকালস্টোরেজ ব্যবহার করতে পারবেন না এবং অবশ্যই ইনডেক্সডডিবি জাতীয় কিছু ব্যবহার করতে পারেন।
ইন্ডেক্সডডিবি'র জন্য এপিআই জটিল এবং ক্লান্তিকর (আমি "ভয়ঙ্কর", ওয়াইএমএমভি) বলতে এতদূর যেতে পেরেছি)। এপিআইকে সহজ করার জন্য বেশ কয়েকটি "র্যাপার" লাইব্রেরি রয়েছে, আমি দৃ strongly়ভাবে পরামর্শ দিচ্ছি যে আপনি সেগুলি দেখুন।
আমার জন্য, আমি দেখেছি যে আমি সঞ্চয় করতে পারেন ব্লব IndexedDB যখন localStorage আমি স্ট্রিং শুধুমাত্র সংরক্ষণ করতে পারেন। এর অর্থ এই যে ইমেজ, অডিও, ভিডিওর মতো বাইনারি ডেটার জন্য সূচক ডিডিবি আরও ভাল। হ্যাঁ আমরা স্থানীয় স্টোরেজে বেস 64 এ চিত্রগুলি সঞ্চয় করতে পারি তবে ব্লবগুলি ছোট এবং দ্রুত হবে কারণ আমাদের সেগুলি ডিকোড করার দরকার নেই।
এমডিএন থেকে উদ্ধৃতি :
The keys and the values are always strings.
Any objects supported by the structured clone algorithm can be stored:
All primitive types However not symbols
Boolean object
String object
Date
RegExp The lastIndex field is not preserved.
Blob
File
FileList
ArrayBuffer
ArrayBufferView This basically means all typed arrays like Int32Array etc.
ImageData
Array
Object This just includes plain objects (e.g. from object literals)
Map
Set