আমার অ্যাপ্লিকেশন ব্যবহার করে একটি অফলাইন ওয়েব অ্যাপ্লিকেশন রয়েছে। আমার এটি প্রায় 10MB - 20MB ডেটা সরবরাহ করতে হবে যা এটি প্রধানত পিএনজি চিত্র ফাইলগুলির সমন্বয়ে (ক্লায়েন্ট-সাইড) সংরক্ষণ করবে। অপারেশনটি নিম্নরূপ:
- অ্যাপ্লিকেশন ওয়েব অ্যাপ্লিকেশন ডাউনলোড এবং ইনস্টল করে (ম্যানিফেস্ট ব্যবহার করে)
- সার্ভার পিএনজি ডেটা ফাইল থেকে ওয়েব অ্যাপ্লিকেশন অনুরোধ (কীভাবে? - নীচের বিকল্পগুলি দেখুন)
- মাঝেমধ্যে ওয়েব অ্যাপ্লিকেশন সার্ভারের সাথে পুনরায় সংযোগ স্থাপন করে এবং পিএনজি ডাটাবেসে ছোট আংশিক আপডেট / মুছে ফেলা / সংযোজন করে
- এফওয়াইআই: সার্ভারটি একটি জাসন রেস্ট সার্ভার, এটি পিকআপের জন্য ফাইলগুলিকে wwwroot এ রাখতে পারে
এখানে ক্লায়েন্ট ভিত্তিক "ডাটাবেসগুলি" সম্পর্কে আমার বর্তমান বিশ্লেষণ যা বাইনারি ব্লব স্টোরেজ পরিচালনা করে
নীচে আপডেট দেখুন
- অ্যাপক্যাচে (ম্যানিফেস্টের মাধ্যমে সমস্ত পিএনজি যোগ করুন এবং তারপরে চাহিদার উপরে আপডেট করুন)
- কন: পিএনজি ডাটাবেস আইটেমের যে কোনও পরিবর্তনের অর্থ ম্যানিফেস্টে সমস্ত আইটেমের সম্পূর্ণ ডাউনলোড হবে (সত্যিই খারাপ খবর!)
- WebStorage
- কন: জেএসএন স্টোরেজের জন্য ডিজাইন করা
- কন: কেবল বেস 64৪ টি এনকোডিংয়ের মাধ্যমে ব্লবগুলি সঞ্চয় করতে পারে (ডি-এনকোডিংয়ের ব্যয়ের কারণে সম্ভবত মারাত্মক ত্রুটি)
- , CON জন্য 5MB এর হার্ড সীমা webStorage http://htmlui.com/blog/2011-08-23-5-obscure-facts-about-html5-localstorage.html
- ফোনগ্যাপ এবং এসকিউএলাইট
- কন: পৃষ্ঠপোষক শংসাপত্রের প্রয়োজন এমন একটি স্থানীয় অ্যাপ হিসাবে এটি প্রত্যাখ্যান করবে
- জিপ ফাইল
- সার্ভার একটি জিপ ফাইল তৈরি করে, এটি wwwroot এ রাখে এবং ক্লায়েন্টকে জানিয়ে দেয়
- ব্যবহারকারীকে ম্যানুয়ালি আনজিপ করতে হবে (কমপক্ষে এটি আমি এটি দেখতে পাই) এবং ক্লায়েন্ট ফাইল সিস্টেমে সংরক্ষণ করতে হবে
- ওয়েব অ্যাপ্লিকেশন ফাইলগুলি রেফারেন্স করতে ফাইলসিস্টেম এপিআই ব্যবহার করে
- কন: জিপটি তৈরির জন্য দীর্ঘ সময় হতে পারে (জিপ 6464?)
- কন: ফাইলসাইটিএম এপিআই সর্বদা স্যান্ডবক্সের বাইরে পড়তে পারে কিনা তা নিশ্চিত নয় (আমার মনে হয়)
- ইউএসবি বা এসডি কার্ড (পাথরের যুগে ফিরে ....)
- ব্যবহারকারী অফলাইনে যাওয়ার আগে সার্ভারে স্থানীয় হবে
- সুতরাং আমরা তাকে একটি এসডি কার্ড সন্নিবেশ করিয়ে দিতে পারি, সার্ভারকে এটি পিএনজি ফাইল দিয়ে পূর্ণ করতে দিন
- তারপরে ব্যবহারকারী এটি ল্যাপটপ, ট্যাবলেটে প্লাগ করবেন
- ওয়েব অ্যাপ্লিকেশন ফাইলগুলি পড়ার জন্য ফাইল সিস্টেম এপিআই ব্যবহার করবে
- কন: ফাইলসাইটিএম এপিআই সর্বদা স্যান্ডবক্সের বাইরে পড়তে পারে কিনা তা নিশ্চিত নয় (আমার মনে হয়)
- WebSQL
- কন: ডাব্লু 3 সি এটিকে পরিত্যাগ করেছে (বেশ খারাপ)
- আমি জাভাস্ক্রিপ্টের মোড়কটিকে বিবেচনা করতে পারি যা সূচিপত্র এবং ওয়েবএসকিউএলকে ফ্যাল-ব্যাক হিসাবে ব্যবহার করে
- ফাইল-সিস্টেম এপিআই
- ক্রোম ব্লবগুলি পড়ার / লেখার সমর্থন করে
- কন: আইই এবং ফায়ারফক্স সম্পর্কে পরিষ্কার নয় (আইই 10, এর মানহীন এমএসস্যাভ রয়েছে)
- caniuse.com আইওএস এবং অ্যান্ড্রয়েড সমর্থনটির প্রতিবেদন করেছে (তবে আবার, এটি কি জেএসওনের কেবল r / ডাব্লু, বা এটির জন্য লেখার জন্য পূর্ণ ব্লব এপিআই অন্তর্ভুক্ত রয়েছে?
- কন: ফায়ারফক্স লোকেরা ফাইল সিস্টেম এপিআই অপছন্দ করছে এবং তারা ব্লব সংরক্ষণে সমর্থন করছে কিনা তা পরিষ্কার নয়: https://hacks.mozilla.org/2012/07/why-no-files system-api-in-firefox/
- প্রো: জেএসপিফারফ অনুসারে ব্লবগুলির জন্য সূচকযুক্ত ডিবি থেকে অনেক দ্রুত http://jsperf.com/indexeddb-vs-localstores/15 (পৃষ্ঠা 2)
- IndexedDB
- আইই 10, ফায়ারফক্সে ভাল সমর্থন (ব্লবগুলি সংরক্ষণ করুন, পড়ুন)
- একটি ফাইল সিস্টেমের চেয়ে ভাল গতি এবং সহজ পরিচালনা (মুছে ফেলা, আপডেট)
- প্রো: গতির পরীক্ষা দেখুন: http://jsperf.com/indexeddb-vs-localstorage/15
- ইনডেক্সডডিবিতে চিত্রগুলি সংরক্ষণ এবং প্রদর্শন সম্পর্কিত এই নিবন্ধটি দেখুন: https://hacks.mozilla.org/2012/02/store-images-and-files-in-indexeddb/
- কন: আমি নিশ্চিত করেছি যে ক্রোম এখনও ব্লব লেখা সমর্থন করে না (বর্তমান বাগ, তবে কখন ঠিক হবে তা পরিষ্কার নয়)
- আপডেট: ক্রোম বিকাশকারীরা নিশ্চিত করে যে তারা ডেস্কটপ এবং অ্যান্ড্রয়েড উভয়ের জন্যই এটিতে কাজ করছে! এখনও কোন সময়রেখা নেই।
- লনচায়ার জাভাস্ক্রিপ্ট র্যাপার http://brian.io/lawnchair/
- প্রো: ইনডেক্সডডিবি, ওয়েবএসকিউএল বা আপনার যে কোনও ডাটাবেস (পলিফিল ভাবেন) এর জন্য খুব পরিষ্কার আবরণী
- কন: কেবল বাইনারি ব্লব সংরক্ষণ করতে পারে না, কেবলমাত্র ডেটা: ইউরি (বেস 64 এনকোডিং) (ডি-এনকোডিংয়ের ব্যয়ের কারণে সম্ভবত মারাত্মক ত্রুটি)
- ইনডেক্সডডিবি জ্যাকিউরি পলিফিল https://github.com/axemclion/jquery-indexeddb
- পরশুরাম কাঁচা ইনডেক্সডডিবি ইন্টারফেসের জন্য একটি দুর্দান্ত জ্যাকুয়েরি র্যাপার লিখেছেন
- প্রো: ইনডেক্সডডিবি ব্যবহার করে ব্যাপকভাবে সরল করে, আমি ক্রোম ফাইলসিসটেমিপিআইয়ের জন্য একটি শিম / পলিফিল যুক্ত করার আশা করছিলাম
- কন: এটি ব্লবগুলি পরিচালনা করতে পারে তবে আমি এটি কাজ করতে পারিনি
- idb.files systemm.js http://ericbidelman.tumblr.com/post/21649963613/idb-files systemm-js-bringing-th-html5-files system-api
- এরিক বিডেলম্যান @ গুগল একটি ভাল পরীক্ষিত পলিফিল ফাইলসিস্টি এপিআই লিখেছেন যা ইনডেক্সড ডিবিকে পতনের হিসাবে ব্যবহার করে
- প্রো: ফাইলসাস্টেম এপিআই ব্লবগুলি সংরক্ষণের জন্য উপযুক্ত suited
- প্রো: ফায়ারফক্স এবং ক্রোমে দুর্দান্ত কাজ করে
- প্রো: ক্লাউড ভিত্তিক কাউচডিবিয়ের সাথে সিঙ্ক্রোনাইজ করার জন্য দুর্দান্ত
- কন: কোন কারণ তা পরিষ্কার নয়, তবে এটি আইই 10 তে কাজ করছে না
- পাউচডিবি জাভাস্ক্রিপ্ট লাইব্রেরি http://pouchdb.com/
- স্থানীয় ডিবির সাথে কাউচডিবি সিঙ্ক করার জন্য দুর্দান্ত (ওয়েবএসকিউএল বা ইনডেক্সডডিবি ব্যবহার করে (যদিও আমার সমস্যা নয়)
- কন: কোন কনস, পাউচডিবি এখন সাম্প্রতিক সমস্ত ব্রাউজারগুলির জন্য (আই, ক্রোম, ফায়ারফক্স, ক্রোম মোবাইল, ইত্যাদি) পাশাপাশি বহু পুরানো ব্রাউজারগুলির জন্য বাইনারি ব্লব সমর্থন করে। আমি প্রথম এই পোস্টটি করার সময় এমনটি ছিল না।
দ্রষ্টব্য: একটি ডেটা দেখতে: পিএনজি-র ইউরি এনকোডিং আমি এখানে একটি উদাহরণ তৈরি করেছি: http://jsbin.com/ivefak/1/edit
পছন্দসই / ইউজফুল / অব্যবহৃত বৈশিষ্ট্যগুলি
- ক্লায়েন্টে কোনও নেটিভ (এক্সই, ফোনগ্যাপ, অবজেক্টিভি ইত্যাদি) অ্যাপ নেই (খাঁটি ওয়েব অ্যাপ্লিকেশন)
- ল্যাপটপের জন্য কেবলমাত্র সর্বশেষতম ক্রোম, ফায়ারফক্স, আই 10 10 এ চালানো দরকার
- অ্যান্ড্রয়েড ট্যাবলেটটির জন্য দৃ solution়ভাবে একই সমাধান চান (আইওএস খুব ভাল হবে) তবে কেবলমাত্র কাজ করার জন্য একটি ব্রাউজারের প্রয়োজন (এফএফ, ক্রোম, ইত্যাদি)
- দ্রুত প্রাথমিক ডিবি জনসংখ্যা
- প্রয়োজনীয়তা: স্টোরেজ থেকে ওয়েব অ্যাপ্লিকেশন দ্বারা চিত্রগুলির খুব দ্রুত পুনরুদ্ধার (ডিবি, ফাইল)
- গ্রাহকদের জন্য নয় আমরা ব্রাউজারগুলিকে সীমাবদ্ধ করতে পারি, এবং ব্যবহারকারীকে বিশেষ সেটআপ এবং কার্যগুলি করতে বলি, তবে আসুন এটি হ্রাস করুন
ইনডেক্সডডিবি বাস্তবায়ন
- আইই, এফএফ এবং ক্রোম কীভাবে অভ্যন্তরীণভাবে এটি প্রয়োগ করে সে সম্পর্কে একটি চমৎকার নিবন্ধ রয়েছে: http://www.aaron-powell.com/web/indexeddb-stores
- সংক্ষেপে:
- আইই সূচকডিবির জন্য এক্সচেঞ্জ এবং অ্যাক্টিভ ডিরেক্টরি হিসাবে একই ডাটাবেস ফর্ম্যাট ব্যবহার করে
- ফায়ারফক্স এসকিউএলাইট ব্যবহার করছে তাই এসকিউএল ডাটাবেসে কোনও নুএসকিউএল ডাটাবেস প্রয়োগ করে
- ক্রোম (এবং ওয়েবকিট) একটি কী / মান স্টোর ব্যবহার করছে যা বিগ টেবলে heritageতিহ্য রয়েছে
আমার বর্তমান ফলাফল
- আমি একটি ইনডেক্সডডিবি পদ্ধতির (এবং ক্রোমের জন্য ফাইলসিসটেমাপি দিয়ে পলফিল ব্যবহার করা পছন্দ করি যতক্ষণ না তারা ব্লব সাপোর্ট না পাঠায়)
- টাইলস আনার জন্য, আমার কাছে একটি দ্বিধাদ্বন্দ্ব ছিল যেহেতু জ্যাকিউরির লোকেরা এজেএক্সে এটি যুক্ত করার বিষয়ে আগ্রহী
- আমি XHR2-প্রচ্ছদ ফিল পারসন্স, যা খুব jQuery .ajax মত হল দ্বারা () সঙ্গে গিয়েছিলাম https://github.com/pmp/xhr2-lib
- 100 এমবি ডাউনলোডের জন্য পারফরম্যান্স (আইই 10 4 এস, ক্রোম 6 এস, ফায়ারফক্স 7 এস)।
- ব্লবসের জন্য কাজ করার জন্য আমি কোনও সূচক ডিবি র্যাপার পেতে পারি না (লনচেয়ার, পাউচডিবি, জ্যাকোয়ারি-ইন্ডেক্সডডিবি, ইত্যাদি)
- আমি আমার নিজের র্যাপারটি ঘূর্ণিত করেছি, এবং সম্পাদনাটি হল (IE10 2s, ক্রোম 3 এস, ফায়ারফক্স 10 এস)
- এফএফ দিয়ে, আমি ধরে নিচ্ছি যে আমরা একটি স্কোর-অবিহীন স্টোরেজের জন্য একটি রিলেশনাল ডিবি (স্ক্লাইট) ব্যবহারের পারফরম্যান্স ইস্যুটি দেখছি
- দ্রষ্টব্য, ক্রোমের সূচকযুক্ত ডিবি'র অবস্থা পরিদর্শন করার জন্য অসামান্য ডিবাগ সরঞ্জাম (বিকাশকারী ট্যাব, সংস্থানসমূহ) রয়েছে।
উত্তর হিসাবে নিচে পোস্ট শেষ ফলাফল
হালনাগাদ
পাউচডিবি এখন সাম্প্রতিক সমস্ত ব্রাউজারগুলির (আই, ক্রোম, ফায়ারফক্স, ক্রোম মোবাইলে) পাশাপাশি অনেক পুরানো ব্রাউজারগুলির জন্য বাইনারি ব্লব সমর্থন করে। আমি প্রথম এই পোস্টটি করার সময় এমনটি ছিল না।