যেহেতু ইন্টারনেট সংযোগগুলি ফ্লেকি বা অস্তিত্বহীন হতে পারে, আপনাকে প্রথমে অফলাইন বিবেচনা করতে হবে: আপনার অ্যাপটি এমনভাবে লিখুন যেন এতে কোনও ইন্টারনেট সংযোগ নেই৷ একবার আপনার অ্যাপ অফলাইনে কাজ করলে, আপনার অ্যাপটি অনলাইনে থাকাকালীন আরও কিছু করার জন্য আপনার যা কিছু নেটওয়ার্ক কার্যকারিতা প্রয়োজন তা যোগ করুন। আপনার অফলাইন-সক্ষম অ্যাপ্লিকেশান বাস্তবায়নের টিপ্সের জন্য পড়ুন৷
ওভারভিউ
Chrome অ্যাপ্লিকেশানগুলি বিনামূল্যে নিম্নলিখিতগুলি পায়:
- আপনার অ্যাপের ফাইলগুলি—এর সমস্ত জাভাস্ক্রিপ্ট, সিএসএস, এবং ফন্ট, এবং অন্যান্য সংস্থানগুলি যা এটির প্রয়োজন (যেমন ছবি)—ইতিমধ্যেই ডাউনলোড করা হয়েছে ৷
- আপনার অ্যাপটি Chrome স্টোরেজ API ব্যবহার করে অল্প পরিমাণ ডেটা সংরক্ষণ এবং ঐচ্ছিকভাবে সিঙ্ক করতে পারে৷
- আপনার অ্যাপ অনলাইন এবং অফলাইন ইভেন্টগুলির জন্য শোনার মাধ্যমে সংযোগের পরিবর্তনগুলি সনাক্ত করতে পারে৷
কিন্তু আপনার অ্যাপ যে অফলাইনে কাজ করবে তার নিশ্চয়তা দেওয়ার জন্য সেই ক্ষমতাগুলি যথেষ্ট নয়৷ আপনার অফলাইন-সক্ষম অ্যাপ এই নিয়মগুলি অনুসরণ করা উচিত:
- যখনই সম্ভব স্থানীয় ডেটা ব্যবহার করুন।
- ইন্টারনেট থেকে সংস্থানগুলি ব্যবহার করার সময়, এটি পেতে
XMLHttpRequest
ব্যবহার করুন এবং তারপরে স্থানীয়ভাবে ডেটা সংরক্ষণ করুন। আপনি স্থানীয়ভাবে ডেটা সংরক্ষণ করতে Chrome স্টোরেজ API, IndexedDB, বা Filesystem API ব্যবহার করতে পারেন। - আপনার অ্যাপের UI এর ডেটা থেকে আলাদা করুন।
- UI এবং ডেটা আলাদা করা শুধুমাত্র আপনার অ্যাপের ডিজাইনকে উন্নত করে না এবং অফলাইন ব্যবহার সক্ষম করার কাজকে সহজ করে, কিন্তু আপনাকে ব্যবহারকারীর ডেটার অন্যান্য ভিউ প্রদান করতে দেয়। একটি MVC ফ্রেমওয়ার্ক আপনাকে UI এবং ডেটা আলাদা রাখতে সাহায্য করতে পারে।
- ধরে নিন আপনার অ্যাপ যে কোনো সময় বন্ধ হয়ে যেতে পারে।
- অ্যাপ্লিকেশানের অবস্থা সংরক্ষণ করুন (স্থানীয়ভাবে এবং দূরবর্তীভাবে, যখন সম্ভব) যাতে ব্যবহারকারীরা যেখান থেকে বন্ধ রেখেছিলেন সেখান থেকে নিতে পারেন।
- আপনার অ্যাপটি ভালোভাবে পরীক্ষা করুন।
- নিশ্চিত করুন যে আপনার অ্যাপটি সাধারণ এবং জটিল উভয় পরিস্থিতিতেই ভাল কাজ করে৷
নিরাপত্তা সীমাবদ্ধতা
Chrome অ্যাপ্লিকেশানগুলি সীমিত যেখানে তারা তাদের সংস্থান রাখতে পারে:
- যেহেতু স্থানীয় ডেটা ব্যবহারকারীর মেশিনে দৃশ্যমান এবং নিরাপদে এনক্রিপ্ট করা যায় না, সংবেদনশীল ডেটা অবশ্যই সার্ভারে থাকতে হবে ৷ উদাহরণস্বরূপ, পাসওয়ার্ড বা ক্রেডিট কার্ড নম্বর স্থানীয়ভাবে সংরক্ষণ করবেন না।
- সমস্ত জাভাস্ক্রিপ্ট যা অ্যাপটি চালায় তা অবশ্যই অ্যাপের প্যাকেজে থাকতে হবে। এটা ইনলাইন হতে পারে না .
সমস্ত CSS শৈলী , ছবি এবং ফন্ট প্রাথমিকভাবে অ্যাপের প্যাকেজে বা দূরবর্তী URL-এ অবস্থিত হতে পারে। রিসোর্সটি দূরবর্তী হলে, আপনি এটিকে আপনার HTML এ উল্লেখ করতে পারবেন না। পরিবর্তে,
XMLHttpRequest
ব্যবহার করে ডেটা পান (দেখুন বহিরাগত সংস্থান উল্লেখ করা )। তারপর হয় একটি ব্লব URL সহ ডেটা পড়ুন বা (এখনও ভাল) সংরক্ষণ করুন এবং তারপর ফাইলসিস্টেম API ব্যবহার করে ডেটা লোড করুন৷
তবে, আপনি বহিরাগত সাইট থেকে ভিডিও এবং শব্দের মতো বড় মিডিয়া সংস্থানগুলি লোড করতে পারেন৷ নিয়মের এই ব্যতিক্রমের একটি কারণ হল যে <video>
এবং <audio>
উপাদানগুলির ভাল ফলব্যাক আচরণ থাকে যখন একটি অ্যাপের সীমিত বা সংযোগ নেই। আরেকটি কারণ হল XMLHttpRequest
এবং ব্লব ইউআরএল সহ মিডিয়া আনা এবং পরিবেশন করা বর্তমানে স্ট্রিমিং বা আংশিক বাফারিংয়ের অনুমতি দেয় না।
একটি স্যান্ডবক্সযুক্ত iframe প্রদান করতে, আপনি একটি <webview>
ট্যাগ তৈরি করতে পারেন। এর বিষয়বস্তু দূরবর্তী হতে পারে, কিন্তু এটির Chrome অ্যাপ API-এ সরাসরি অ্যাক্সেস নেই ( এম্বেড এক্সটার্নাল ওয়েব পেজ দেখুন)।
ক্রোম অ্যাপের কিছু বিধিনিষেধ কন্টেন্ট সিকিউরিটি পলিসি (CSP) দ্বারা প্রয়োগ করা হয় যা সর্বদা নিম্নোক্ত এবং Chrome অ্যাপের জন্য পরিবর্তন করা যায় না:
default-src 'self';
connect-src * data: blob: filesystem:;
style-src 'self' blob: data: filesystem: 'unsafe-inline';
img-src 'self' blob: data: filesystem:;
frame-src 'self' blob: data: filesystem:;
font-src 'self' blob: data: filesystem:;
media-src * data: blob: filesystem:;
অফলাইন_সক্ষম উল্লেখ করা হচ্ছে
এটা ধরে নেওয়া হয় যে আপনার অ্যাপ অফলাইনে ভাল আচরণ করে। যদি তা না হয়, তাহলে আপনার সেই সত্যটির বিজ্ঞাপন দেওয়া উচিত, যাতে ব্যবহারকারী অফলাইনে থাকাকালীন এর লঞ্চ আইকনটি ম্লান হয়ে যায়। এটি করতে, অ্যাপ ম্যানিফেস্ট ফাইলে offline_enabled
সেট করুন false
:
{
"name": "My app",
...
"offline_enabled": false,
...
}
স্থানীয়ভাবে ডেটা সংরক্ষণ করা
নিম্নলিখিত টেবিলটি স্থানীয়ভাবে ডেটা সংরক্ষণের জন্য আপনার বিকল্পগুলি দেখায় (এছাড়াও ডেটা পরিচালনা দেখুন)।
API | সর্বোত্তম ব্যবহার | নোট |
---|---|---|
ক্রোম স্টোরেজ API | অল্প পরিমাণে স্ট্রিং ডেটা | সেটিংস এবং রাজ্যের জন্য দুর্দান্ত। দূরবর্তীভাবে সিঙ্ক করা সহজ (কিন্তু আপনাকে এটি করতে হবে না)। কোটার কারণে বেশি পরিমাণ ডেটার জন্য ভালো নয়। |
IndexedDB API | স্ট্রাকচার্ড ডেটা | ডেটাতে দ্রুত অনুসন্ধান সক্ষম করে। সীমাহীন স্টোরেজ অনুমতির সাথে ব্যবহার করুন। |
ফাইল সিস্টেম API | অন্য কিছু | একটি স্যান্ডবক্সযুক্ত এলাকা প্রদান করে যেখানে আপনি ফাইল সংরক্ষণ করতে পারেন। সীমাহীন স্টোরেজ অনুমতির সাথে ব্যবহার করুন। |
দূরবর্তীভাবে ডেটা সংরক্ষণ করা হচ্ছে
সাধারণভাবে, আপনি কীভাবে দূরবর্তীভাবে ডেটা সংরক্ষণ করেন তা আপনার উপর নির্ভর করে, তবে কিছু ফ্রেমওয়ার্ক এবং API সাহায্য করতে পারে ( এমভিসি আর্কিটেকচার দেখুন)। আপনি যদি Chrome স্টোরেজ API ব্যবহার করেন, তাহলে যখনই অ্যাপটি অনলাইন থাকে এবং ব্যবহারকারী Chrome এ সাইন ইন করেন তখন সমস্ত সিঙ্কযোগ্য ডেটা স্বয়ংক্রিয়ভাবে সিঙ্ক হয়ে যায়৷ ব্যবহারকারী যদি সাইন ইন না করে থাকেন, তাহলে তাদের সাইন ইন করতে বলা হবে। তবে, মনে রাখবেন যে ব্যবহারকারী আপনার অ্যাপ আনইনস্টল করলে ব্যবহারকারীর সিঙ্ক করা ডেটা মুছে যাবে। {প্রশ্ন: সত্য?}
আপনার অ্যাপ আনইনস্টল করার পর অন্তত 30 দিনের জন্য ব্যবহারকারীদের ডেটা সংরক্ষণ করার কথা বিবেচনা করুন, যাতে ব্যবহারকারীরা আপনার অ্যাপ পুনরায় ইনস্টল করলে তাদের ভালো অভিজ্ঞতা হয়।
ডেটা থেকে UI আলাদা করা হচ্ছে
একটি MVC ফ্রেমওয়ার্ক ব্যবহার করা আপনাকে আপনার অ্যাপ ডিজাইন এবং বাস্তবায়ন করতে সাহায্য করতে পারে যাতে ডেটা ডেটাতে অ্যাপের দৃশ্য থেকে সম্পূর্ণ আলাদা হয়। MVC ফ্রেমওয়ার্কের তালিকার জন্য MVC আর্কিটেকচার দেখুন।
যদি আপনার অ্যাপটি একটি কাস্টম সার্ভারের সাথে কথা বলে, সার্ভারটি আপনাকে ডেটা দেবে, HTML এর অংশ নয়। RESTful APIs পরিপ্রেক্ষিতে চিন্তা করুন.
একবার আপনার ডেটা আপনার অ্যাপ থেকে আলাদা হয়ে গেলে, ডেটার বিকল্প ভিউ প্রদান করা অনেক সহজ। উদাহরণস্বরূপ, আপনি যেকোনো পাবলিক ডেটার একটি ওয়েবসাইট ভিউ প্রদান করতে পারেন। আপনার ব্যবহারকারী যখন ক্রোম থেকে দূরে থাকে তখনই একটি ওয়েবসাইট ভিউ উপযোগী হতে পারে না, কিন্তু এটি অনুসন্ধান ইঞ্জিনগুলিকে ডেটা খুঁজে পেতে সক্ষম করতে পারে৷
টেস্টিং
নিম্নলিখিত পরিস্থিতিতে আপনার অ্যাপ ভাল কাজ করে তা নিশ্চিত করুন:
- অ্যাপ্লিকেশন ইনস্টল করা হয়, এবং তারপর অবিলম্বে অফলাইনে চলে যায়. অন্য কথায়, অ্যাপটির প্রথম ব্যবহার অফলাইনে।
- অ্যাপটি একটি কম্পিউটারে ইনস্টল করা হয় এবং তারপর অন্য কম্পিউটারে সিঙ্ক করা হয়।
- অ্যাপটি আনইনস্টল করা হয়েছে এবং তারপর অবিলম্বে আবার ইনস্টল করা হয়েছে।
- অ্যাপটি একই প্রোফাইলে একই সময়ে দুটি কম্পিউটারে চলছে। অ্যাপটিকে অবশ্যই যুক্তিসঙ্গতভাবে আচরণ করতে হবে যখন একটি কম্পিউটার অফলাইনে যায়, ব্যবহারকারী সেই কম্পিউটারে একগুচ্ছ জিনিসপত্র করে এবং তারপরে কম্পিউটারটি আবার অনলাইনে আসে।
- অ্যাপটির মাঝে মাঝে সংযোগ রয়েছে, প্রায়শই অনলাইন এবং অফলাইনের মধ্যে স্যুইচ করা হয়।
এছাড়াও নিশ্চিত করুন যে অ্যাপটি ব্যবহারকারীর মেশিনে ব্যবহারকারীর কোনো সংবেদনশীল ডেটা (যেমন পাসওয়ার্ড) সংরক্ষণ করে না ।