HTML5 অফলাইন স্টোরেজ পরিচালনা করা

HTML5 অনেক স্টোরেজ API চালু করেছে যা আপনাকে আপনার ব্যবহারকারীদের ব্রাউজারে স্থানীয়ভাবে প্রচুর পরিমাণে ডেটা সঞ্চয় করতে দেয়। কিন্তু প্রতিটি অ্যাপের জন্য বরাদ্দ স্থানের পরিমাণ, ডিফল্টরূপে, কয়েক মেগাবাইটের মধ্যে সীমাবদ্ধ। Google Chrome আপনাকে একটি বৃহত্তর স্টোরেজ কোটা চাইতে দেয়, আগের সীমা মাত্র 5 MB ছাড়িয়ে৷

এই দস্তাবেজটি আপনাকে Chrome-এ ব্যবহৃত সঞ্চয়স্থানের প্রকারের মৌলিক ধারণাগুলির সাথে পরিচয় করিয়ে দেয় এবং পরীক্ষামূলক কোটা ব্যবস্থাপনা API বর্ণনা করে, যা আপনাকে আপনার স্টোরেজ কোটা পরিচালনা করতে দেয়৷ নথিটি অনুমান করে যে আপনি ইতিমধ্যেই ক্লায়েন্ট-সাইড স্টোরেজের সাধারণ ধারণাগুলির সাথে পরিচিত এবং অফলাইন APIগুলি কীভাবে ব্যবহার করবেন তা জানেন৷

বিষয়বস্তু

  1. স্টোরেজের প্রকারভেদ
    1. অস্থায়ী
    2. অবিচল
    3. আনলিমিটেড
    4. স্টোরেজ প্রকারের তুলনা করা
  2. আপনার কোটা পরিচালনা
    1. স্টোরেজ ব্যবহার এবং প্রাপ্যতা জিজ্ঞাসা করুন
    2. আরও স্টোরেজের জন্য জিজ্ঞাসা করুন
    3. পরীক্ষার জন্য কোটা রিসেট করুন
  3. API রেফারেন্স
    1. ধ্রুবক
    2. পদ্ধতি ওভারভিউ
    3. পদ্ধতি
  4. ভবিষ্যত উন্নয়ন

স্টোরেজের প্রকারভেদ

Google Chrome-এ, আপনি তিন ধরনের স্টোরেজ চাইতে পারেন:

এই স্টোরেজের ধরনগুলি নিম্নলিখিত বিভাগে আরও বিশদে বর্ণনা করা হয়েছে এবং নীচের টেবিলে একে অপরের সাথে তুলনা করা হয়েছে।

অস্থায়ী স্টোরেজ

অস্থায়ী সঞ্চয়স্থান হল ক্ষণস্থায়ী সঞ্চয়স্থান যা যেকোনো ওয়েব অ্যাপে উপলব্ধ। Chrome স্বয়ংক্রিয়ভাবে আপনার অ্যাপকে অস্থায়ী সঞ্চয়স্থান দেয়, তাই আপনাকে বরাদ্দের অনুরোধ করতে হবে না।

পুল ভাগ করা

ব্রাউজারে চলমান সমস্ত ওয়েব অ্যাপের মধ্যে অস্থায়ী সঞ্চয়স্থান ভাগ করা হয়। শেয়ার্ড পুল উপলব্ধ ডিস্ক স্থানের 1/3 পর্যন্ত হতে পারে। ইতিমধ্যেই অ্যাপস দ্বারা ব্যবহৃত স্টোরেজ ভাগ করা পুলের গণনার মধ্যে অন্তর্ভুক্ত করা হয়েছে; অর্থাৎ, গণনার উপর ভিত্তি করে (available storage space + storage being used by apps) * .333

প্রতিটি অ্যাপে শেয়ার্ড পুলের 20% পর্যন্ত থাকতে পারে। একটি উদাহরণ হিসাবে, যদি মোট উপলব্ধ ডিস্ক স্থান 60 GB হয়, শেয়ার্ড পুল 20 GB হয় এবং অ্যাপটিতে 4 GB পর্যন্ত থাকতে পারে। এটি উপলব্ধ ডিস্ক স্পেসের (60 GB) 1/3 (20 GB পর্যন্ত) 20% (4 GB পর্যন্ত) থেকে গণনা করা হয়।

আরও জায়গা চাইছে

যদিও আপনি আপনার অ্যাপের জন্য উপলব্ধ স্টোরেজ স্পেসের পরিমাণ এবং আপনার অ্যাপের জন্য ইতিমধ্যে সংরক্ষিত ডেটার পরিমাণের জন্য জিজ্ঞাসা করতে পারেন, আপনি আরও অস্থায়ী সঞ্চয়স্থানের জন্য জিজ্ঞাসা করতে পারবেন না। যদি একটি অ্যাপ বরাদ্দ কোটা অতিক্রম করে, একটি ত্রুটি নিক্ষেপ করা হয়।

স্টোরেজ ফুরিয়ে যাচ্ছে

একবার পুরো পুলের জন্য স্টোরেজ কোটা অতিক্রম করা হলে, সাম্প্রতিক ব্যবহৃত হোস্টের জন্য সঞ্চিত সমগ্র ডেটা মুছে ফেলা হয়। ব্রাউজার, যাইহোক, স্থানীয় স্টোরেজ এবং সেশন স্টোরেজের ডেটা অপসারণ করবে না। অন্যান্য অফলাইন API-এ সঞ্চিত ডেটার জন্য, ব্রাউজার সম্পূর্ণ ডেটা মুছে দেয় এবং আংশিক নয় যাতে অ্যাপ ডেটা অপ্রত্যাশিত উপায়ে দূষিত না হয়।

যেহেতু প্রতিটি অ্যাপ স্টোরেজ পুলের সর্বাধিক 20% এর মধ্যে সীমাবদ্ধ, তাই মুছে ফেলার সম্ভাবনা তখনই যখন ব্যবহারকারী সক্রিয়ভাবে পাঁচটির বেশি অফলাইন অ্যাপ চালাচ্ছেন যা প্রতিটি সর্বাধিক স্টোরেজ ব্যবহার করছে।

যাইহোক, ব্যবহারকারীরা তাদের হার্ড ড্রাইভে আরও ফাইল যুক্ত করার কারণে উপলব্ধ স্টোরেজ স্পেস সঙ্কুচিত হতে পারে। যখন উপলব্ধ ডিস্ক স্থান আঁটসাঁট হয়ে যায় (মনে রাখবেন, শেয়ার্ড পুলটি বর্তমান উপলব্ধ ডিস্কের অর্ধেক স্থান পায়), ব্রাউজার সর্বনিম্ন সম্প্রতি ব্যবহৃত হোস্টের জন্য সংরক্ষিত সমস্ত ডেটা মুছে ফেলে।

অবিরাম স্টোরেজ

ক্রমাগত সঞ্চয়স্থান হল স্টোরেজ যা ব্রাউজারে থাকে যদি না ব্যবহারকারী এটি অপসারণ করে। এটি শুধুমাত্র ফাইল সিস্টেম API ব্যবহার করে এমন অ্যাপগুলির জন্য উপলব্ধ, কিন্তু শেষ পর্যন্ত IndexedDB এবং অ্যাপ্লিকেশন ক্যাশের মতো অন্যান্য অফলাইন APIগুলিতে উপলব্ধ হবে৷

একটি অ্যাপ্লিকেশনে অস্থায়ী সঞ্চয়স্থানের চেয়ে স্থায়ী সঞ্চয়স্থানের জন্য একটি বড় কোটা থাকতে পারে, তবে আপনাকে অবশ্যই কোটা ব্যবস্থাপনা API ব্যবহার করে সঞ্চয়ের অনুরোধ করতে হবে এবং ব্যবহারকারীকে অবশ্যই আপনাকে আরও স্থান ব্যবহার করার অনুমতি দিতে হবে। Chrome একটি তথ্য বার উপস্থাপন করে যা ব্যবহারকারীকে অ্যাপটিকে আরও স্থানীয় সঞ্চয়স্থান দেওয়ার জন্য অনুরোধ করে।

আনলিমিটেড স্টোরেজ

সীমাহীন সঞ্চয়স্থান ক্রমাগত সঞ্চয়স্থানের অনুরূপ, তবে এটি শুধুমাত্র Chrome অ্যাপ এবং এক্সটেনশনগুলিতে (.crx ফাইল) উপলব্ধ। সীমাহীন স্টোরেজের আকার শুধুমাত্র ব্যবহারকারীর হার্ড ড্রাইভে স্থানের প্রাপ্যতা দ্বারা সীমাবদ্ধ। আপনি একটি অ্যাপ বা এক্সটেনশনের জন্য ম্যানিফেস্ট ফাইলে unlimitedStorage অনুমতি চাইতে পারেন। ইনস্টলেশনের সময়, ব্যবহারকারীকে অ্যাপ বা এক্সটেনশনের প্রয়োজনীয় অনুমতিগুলি সম্পর্কে অবহিত করা হয়। ইনস্টলেশনের সাথে এগিয়ে যাওয়ার মাধ্যমে, ব্যবহারকারী স্পষ্টভাবে সমস্ত পৃষ্ঠাগুলির জন্য অনুমতি দেয় যার URL গুলি manifest.json ফাইলে তালিকাভুক্ত রয়েছে৷

আরও জানতে, অ্যাপস এবং এক্সটেনশনগুলির জন্য সংশ্লিষ্ট বিকাশকারী নির্দেশিকাগুলি দেখুন৷

স্টোরেজ প্রকারের তুলনা করা

নিম্নলিখিত সারণী তিন ধরনের স্টোরেজের মধ্যে পার্থক্য বর্ণনা করে।

অস্থায়ী স্টোরেজ অবিরাম স্টোরেজ আনলিমিটেড স্টোরেজ
মৌলিক বিবরণ

ক্ষণস্থায়ী সঞ্চয়স্থান যা যেকোনো ওয়েব অ্যাপে উপলব্ধ।

এটি স্বয়ংক্রিয় এবং অনুরোধ করার প্রয়োজন নেই।

স্থায়ী সঞ্চয়স্থান যা অবশ্যই কোটা ম্যানেজমেন্ট API এর মাধ্যমে অনুরোধ করা উচিত এবং ব্যবহারকারীদের দ্বারা মঞ্জুর করা উচিত।

Chrome এক্সটেনশন এবং অ্যাপের জন্য স্থায়ী স্টোরেজ।

এটি ম্যানিফেস্ট ফাইলে সেট করা আছে এবং ব্যবহারকারীদের দ্বারা মঞ্জুর করা আবশ্যক৷

প্রাপ্যতা

সমস্ত ওয়েব অ্যাপ।

সমস্ত ওয়েব অ্যাপ। ক্রোম এক্সটেনশনের পাশাপাশি হোস্ট করা এবং ইনস্টল করা ওয়েব অ্যাপগুলির জন্য অনন্য৷
অনুমতি কোনোটিই নয়। আপনি স্পষ্টভাবে অনুরোধ না করে এটি ব্যবহার করতে পারেন।

কোটা ম্যানেজমেন্ট API ব্যবহার করে আপনাকে আরও স্টোরেজের জন্য অনুরোধ করতে হবে।

আপনি অ্যাপ বা এক্সটেনশনের জন্য ম্যানিফেস্ট ফাইলে unlimitedStorage অনুমতি চাইতে পারেন।
প্রথম ব্যবহারে ব্যবহারকারীর অভিজ্ঞতা ব্যবহারকারীর কাছে অদৃশ্য। অ্যাপটি শুধু চলে।

Chrome একটি তথ্য বার প্রদর্শন করে যা ব্যবহারকারীকে স্টোরেজ অনুরোধ গ্রহণ বা প্রত্যাখ্যান করতে অনুরোধ করে।

কিন্তু আপনার অনুরোধ করা কোটার পরিমাণ আসলে অ্যাপের বর্তমান বরাদ্দের চেয়ে কম হলে, কোনো প্রম্পট দেখানো হয় না। বৃহত্তর কোটা রাখা হয়েছে।

ইনস্টলেশনের সময়, ব্যবহারকারীকে অ্যাপ বা এক্সটেনশনের প্রয়োজনীয় অনুমতিগুলি সম্পর্কে অবহিত করা হয়। ইনস্টলেশনের সাথে এগিয়ে যাওয়ার মাধ্যমে, ব্যবহারকারী অন্তর্নিহিতভাবে সমস্ত পৃষ্ঠার জন্য অনুমতি দেয় যার URL গুলি অ্যাপ বা এক্সটেনশনের জন্য manifest.json ফাইলে তালিকাভুক্ত রয়েছে৷

বর্ধিত সঞ্চয়স্থানের জন্য পরবর্তী অনুরোধে ব্যবহারকারীর অভিজ্ঞতা প্রযোজ্য নয়। আপনি আরও অস্থায়ী সঞ্চয়স্থানের জন্য জিজ্ঞাসা করতে পারবেন না।

Chrome আবার ব্যবহারকারীকে অনুরোধ করে।

অ্যাপ বা এক্সটেনশন দ্বারা বর্ধিত কোটার জন্য অনুরোধ নির্বিশেষে Chrome ইনস্টলেশনের পরে ব্যবহারকারীকে অনুরোধ করে না।
তথ্যের স্থিরতা

ক্ষণস্থায়ী। ব্রাউজার ডেটা মুছে ফেলতে পারে।

অবিচল। ব্যবহারকারীর নির্দেশ না দেওয়া পর্যন্ত ব্রাউজার ডেটা মুছে দেয় না। পরবর্তী অ্যাক্সেসে ডেটা পাওয়া যায়।

মনে করবেন না যে ডেটা স্থায়ী, কারণ ব্যবহারকারী এটি মুছে ফেলতে পারেন।

ক্রমাগত স্টোরেজ হিসাবে একই.

ডিফল্ট স্টোরেজ স্পেস

শেয়ার্ড পুলের 20% পর্যন্ত।

0 MB আপনাকে স্পষ্টভাবে একটি নির্দিষ্ট স্টোরেজ স্পেস জিজ্ঞাসা করতে হবে।

0 MB ম্যানিফেস্ট ফাইলে আপনাকে স্পষ্টভাবে unlimitedStorage জন্য জিজ্ঞাসা করতে হবে।

আপনি আপনার স্টোরেজ প্রয়োজনীয়তা নির্দিষ্ট না করলে, Chrome অস্থায়ী স্টোরেজের শেয়ার্ড পুল থেকে অ্যাপে স্টোরেজ বরাদ্দ করে।

সর্বোচ্চ স্টোরেজ স্পেস শেয়ার্ড পুলের 20% পর্যন্ত। হার্ড ড্রাইভে উপলব্ধ স্থান হিসাবে বড়. এটি স্টোরেজের কোন নির্দিষ্ট পুল নেই। হার্ড ড্রাইভে উপলব্ধ স্থান হিসাবে বড়.
প্রস্তাবিত ব্যবহারের ক্ষেত্রে ক্যাশিং। যে অ্যাপগুলি অফলাইনে কাজ করে বা প্রচুর পরিমাণে সম্পদ রয়েছে৷ Google Chrome-এ চালানোর জন্য ডিজাইন করা অ্যাপ।
API যে এটি ব্যবহার করতে পারে

অফলাইন API

  • অ্যাপ ক্যাশে
  • ফাইল সিস্টেম
  • ইনডেক্সডডিবি
  • WebSQL ( 18 নভেম্বর, 2010 থেকে অবরুদ্ধ )

দ্রষ্টব্য: LocalStorage এবং SessionStorage-এর মতো ওয়েব স্টোরেজ API গুলি 5 MB-এ স্থির থাকে৷

ফাইল সিস্টেম API

অফলাইন API

  • অ্যাপ ক্যাশে
  • ফাইল সিস্টেম
  • ইনডেক্সডডিবি
  • WebSQL (অপ্রচলিত)

দ্রষ্টব্য: LocalStorage এবং SessionStorage-এর মতো ওয়েব স্টোরেজ API গুলি 5 MB-এ স্থির থাকে৷

আপনার কোটা পরিচালনা

কোটা ম্যানেজমেন্ট API এর সাথে, যা Chrome 13 এ প্রবর্তিত হয়েছিল, আপনি নিম্নলিখিতগুলি করতে পারেন:

এপিআই গ্লোবাল অবজেক্ট window.webkitStorageInfo এর সাথে প্রয়োগ করা হয়েছে।

রেফারেন্স ডকুমেন্টেশনের জন্য, পরবর্তী বিভাগটি দেখুন।

স্টোরেজ ব্যবহার এবং প্রাপ্যতা জিজ্ঞাসা করা হচ্ছে

যে স্টোরেজ সাইজটি ব্যবহার করা হচ্ছে এবং হোস্টের জন্য যে স্থানটি অবশিষ্ট আছে তা জানতে, নিম্নলিখিতটির সাথে queryUsageAndQuota() কে কল করুন:

  • আপনি যে ধরনের স্টোরেজ পরীক্ষা করতে চান
  • সফল কলব্যাক

API দ্বারা রিপোর্ট করা ব্যবহার ব্যবহারকারীর ডেটার প্রকৃত আকারের সাথে নাও মিলতে পারে, কারণ প্রতিটি সঞ্চয়স্থানের মেটাডেটা সংরক্ষণ করতে কিছু অতিরিক্ত বাইটের প্রয়োজন হতে পারে। এছাড়াও, স্থিতি আপডেটগুলি পিছিয়ে যেতে পারে, যার ফলে API সাম্প্রতিক স্টোরেজ স্থিতি প্রতিফলিত করে না।

নিম্নলিখিত কোড স্নিপেট দেখায় কিভাবে আপনি স্টোরেজ স্পেস সম্পর্কে জিজ্ঞাসা করতে পারেন:

// Request storage usage and capacity left
// Choose either Temporary or Persistent
navigator.webkitTemporaryStorage.queryUsageAndQuota (
    function(usedBytes, grantedBytes) {
        console.log('we are using ', usedBytes, ' of ', grantedBytes, 'bytes');
    },
    function(e) { console.log('Error', e);  }
);

আপনি যদি ক্রমাগত স্টোরেজের অবস্থা জানতে চান, তাহলে শুধু webkitStorageInfo.TEMPORARY webkitStorageInfo.PERSISTENT দিয়ে প্রতিস্থাপন করুন। enum এছাড়াও window অবজেক্টে (গ্লোবাল নেমস্পেস), তাই আপনি window.PERSISTENT এবং window.TEMPORARY ব্যবহার করতে পারেন।

আরো সঞ্চয়স্থানের জন্য জিজ্ঞাসা

বরাদ্দ স্বয়ংক্রিয় হওয়ায় আপনাকে আরও অস্থায়ী সঞ্চয়স্থানের জন্য জিজ্ঞাসা করার দরকার নেই এবং আপনি সর্বোচ্চ সীমা অতিক্রম করতে পারবেন না ( সারণীতে বর্ণিত)।

ফাইল সিস্টেম API-এর জন্য স্থায়ী সঞ্চয়স্থানের জন্য, ডিফল্ট কোটা হল 0, তাই আপনাকে স্পষ্টভাবে আপনার অ্যাপ্লিকেশনের জন্য সঞ্চয়ের অনুরোধ করতে হবে। নিম্নলিখিত সহ requestQuota() কল করুন:

  • স্টোরেজের ধরন
  • আকার
  • সফল কলব্যাক

আপনি যা চান তার উপর নির্ভর করে, নিম্নলিখিতগুলি ঘটে:

  • আপনি যদি একটি বড় কোটার জন্য জিজ্ঞাসা করেন, ব্রাউজার ব্যবহারকারীর কাছে একটি তথ্য বার উপস্থাপন করে এবং তাদের বর্ধিত কোটার জন্য অনুমতি প্রদান বা অস্বীকার করার অনুরোধ জানায়। কিছু ক্ষেত্রে, অনুরোধটি নীরবে প্রত্যাখ্যান করা হতে পারে এবং বর্তমান কোটা বা ছোট কোটা ফেরত দেওয়া হয়।
  • আপনার অনুরোধ করা কোটার পরিমাণ অ্যাপের বর্তমান বরাদ্দের চেয়ে কম হলে, কোনো প্রম্পট দেখানো হয় না।
  • আপনি যদি অনুমোদিত স্টোরেজের চেয়ে বেশি সঞ্চয়স্থানের জন্য জিজ্ঞাসা করেন তবে আপনি একটি ত্রুটি পাবেন ( QUOTA_EXCEEDED_ERR )।
  • ব্যবহারকারী ইতিমধ্যে অনুমতি দেওয়ার পরে আপনি যদি আবার requestQuota() কল করেন তবে কিছুই হবে না। তাই আবার পদ্ধতি কল বিরক্ত করবেন না.

আপনি কীভাবে আরও সঞ্চয়স্থানের জন্য জিজ্ঞাসা করতে পারেন তা নিম্নলিখিতটি দেখায়:

// Request Quota (only for File System API)
var requestedBytes = 1024*1024*10; // 10MB

navigator.webkitPersistentStorage.requestQuota (
    requestedBytes, function(grantedBytes) {
        window.requestFileSystem(PERSISTENT, grantedBytes, onInitFs, errorHandler);

    }, function(e) { console.log('Error', e); }
);
});

পরীক্ষার জন্য কোটা রিসেট করা হচ্ছে

আপনি যখন আপনার অ্যাপে স্টোরেজ পরীক্ষা করছেন, তখন আপনি সঞ্চিত ডেটা সাফ করতে চাইতে পারেন যাতে আপনি আপনার অ্যাপে নতুন করে কোটা ব্যবস্থাপনা পরীক্ষা করতে পারেন। এটি করতে:

  1. omnibox (অ্যাড্রেস বার) এ chrome://settings/cookies লিখুন।
  2. আপনার অ্যাপের জন্য অনুসন্ধান করুন.
  3. আপনার অ্যাপ্লিকেশন নির্বাচন করুন.
  4. হাইলাইট করা নির্বাচনের ডানদিকে X-এ ক্লিক করুন।

API রেফারেন্স

এই বিভাগটি কোটা ম্যানেজমেন্ট API এর পদ্ধতিগুলি নথিভুক্ত করে৷

ধ্রুবক

নিচের webkitStorageInfo ধ্রুবক, যা স্টোরেজের ধরন নির্দেশ করে।

ধ্রুবক মান বর্ণনা
TEMPORARY 0 অস্থায়ী স্টোরেজ।
PERSISTENT 1 অবিরাম স্টোরেজ।

পদ্ধতি ওভারভিউ

queryUsageAndQuota
requestQuota

পদ্ধতি

queryUsageAndQuota

ব্যবহার করা হচ্ছে স্টোরেজ সাইজ এবং হোস্টের জন্য অবশিষ্ট উপলব্ধ স্থান পরীক্ষা করুন।

 // you could also use it from webkitPersistentStorage
navigator.webkitTemporaryStorage.queryUsageAndQuota(
      successCallback,
      errorCallback);
  • successCallback : দুটি প্যারামিটার সহ ঐচ্ছিক কলব্যাক:

    • অ্যাপটি ব্যবহার করছে বর্তমান বাইটের সংখ্যা।
    • কোটায় বাকি বাইটের সংখ্যা।
  • errorCallback : ঐচ্ছিক ত্রুটি কলব্যাক।

অনুরোধ কোটা

আরও স্টোরেজের জন্য জিজ্ঞাসা করুন। ব্রাউজারটি একটি তথ্য বার উপস্থাপন করে যাতে ব্যবহারকারীকে অ্যাপটিকে আরও সঞ্চয়স্থানের অনুমতি প্রদান বা অস্বীকার করার অনুরোধ জানানো হয়।

 // you could also use it from webkitTemporaryStorage
navigator.webkitPersistentStorage.requestQuota (
      newQuotaInBytes,
      quotaCallback,
      errorCallback);
পরামিতি
  • newQuotaInBytes : আপনার স্টোরেজ কোটায় আপনি যে পরিমাণ বাইট চান।
  • successCallback : ঐচ্ছিক কলব্যাক যা প্রদত্ত বাইটের পরিমাণ অতিক্রম করে।
  • errorCallback : ঐচ্ছিক ত্রুটি কলব্যাক।

ভবিষ্যত উন্নয়ন

পরিকল্পনাটি হল কোটা ম্যানেজমেন্ট এপিআই-এর অধীনে সমস্ত HTML5 অফলাইন স্টোরেজ API-কে ইনডেক্সডডিবি, অ্যাপ্লিকেশন ক্যাশে, ফাইল সিস্টেম এবং নির্দিষ্ট করা হতে পারে এমন অন্যান্য APIগুলি সহ রাখা। আপনি এটি দিয়ে সমস্ত স্টোরেজ বরাদ্দ পরিচালনা করতে সক্ষম হবেন।