পারফরম্যান্সের উন্নতি

এই ডকুমেন্টে আপনার অ্যাপ্লিকেশনের কর্মক্ষমতা উন্নত করার জন্য আপনি যে কৌশলগুলি ব্যবহার করতে পারেন তা অন্তর্ভুক্ত করা হয়েছে। কিছু ক্ষেত্রে, অন্যান্য API বা জেনেরিক API থেকে উদাহরণগুলি উপস্থাপিত ধারণাগুলি ব্যাখ্যা করার জন্য ব্যবহার করা হয়। তবে, একই ধারণাগুলি Android Over The Air API-এর ক্ষেত্রে প্রযোজ্য।

gzip ব্যবহার করে কম্প্রেশন

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

gzip-এনকোডেড রেসপন্স পেতে হলে আপনাকে দুটি জিনিস করতে হবে: একটি Accept-Encoding হেডার সেট করুন, এবং আপনার ব্যবহারকারী এজেন্টকে gzip স্ট্রিং ধারণ করার জন্য পরিবর্তন করুন। gzip কম্প্রেশন সক্ষম করার জন্য সঠিকভাবে তৈরি HTTP হেডারের একটি উদাহরণ এখানে দেওয়া হল:

Accept-Encoding: gzip
User-Agent: my program (gzip)

আংশিক সম্পদ নিয়ে কাজ করা

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

আংশিক অনুরোধ দুই ধরণের আছে:

  • আংশিক প্রতিক্রিয়া : একটি অনুরোধ যেখানে আপনি প্রতিক্রিয়ায় কোন ক্ষেত্রগুলি অন্তর্ভুক্ত করবেন তা নির্দিষ্ট করেন ( fields অনুরোধ প্যারামিটার ব্যবহার করুন)।
  • প্যাচ : একটি আপডেট অনুরোধ যেখানে আপনি কেবল সেই ক্ষেত্রগুলি পাঠান যা আপনি পরিবর্তন করতে চান ( PATCH HTTP ক্রিয়া ব্যবহার করুন)।

আংশিক অনুরোধ করার বিষয়ে আরও বিশদ নিম্নলিখিত বিভাগগুলিতে সরবরাহ করা হয়েছে।

আংশিক প্রতিক্রিয়া

ডিফল্টরূপে, সার্ভার অনুরোধ প্রক্রিয়াকরণের পরে একটি রিসোর্সের সম্পূর্ণ প্রতিনিধিত্ব ফেরত পাঠায়। আরও ভালো পারফরম্যান্সের জন্য, আপনি সার্ভারকে শুধুমাত্র আপনার প্রয়োজনীয় ক্ষেত্রগুলি পাঠাতে বলতে পারেন এবং পরিবর্তে একটি আংশিক প্রতিক্রিয়া পেতে পারেন।

আংশিক প্রতিক্রিয়ার অনুরোধ করতে, আপনি যে ক্ষেত্রগুলি ফেরত চান তা নির্দিষ্ট করতে fields request প্যারামিটার ব্যবহার করুন। আপনি এই প্যারামিটারটি যেকোনো অনুরোধের সাথে ব্যবহার করতে পারেন যা প্রতিক্রিয়া ডেটা ফেরত দেয়।

মনে রাখবেন যে fields প্যারামিটার শুধুমাত্র প্রতিক্রিয়া ডেটাকে প্রভাবিত করে; এটি আপনার প্রয়োজন এমন ডেটাকে প্রভাবিত করে না, যদি থাকে। রিসোর্স পরিবর্তন করার সময় আপনার পাঠানো ডেটার পরিমাণ কমাতে, একটি প্যাচ অনুরোধ ব্যবহার করুন।

প্যাচ (আংশিক আপডেট)

রিসোর্স পরিবর্তন করার সময় আপনি অপ্রয়োজনীয় ডেটা পাঠানো এড়াতে পারেন। শুধুমাত্র আপনার পরিবর্তন করা নির্দিষ্ট ক্ষেত্রগুলির জন্য আপডেট করা ডেটা পাঠাতে, HTTP PATCH ক্রিয়াটি ব্যবহার করুন। এই নথিতে বর্ণিত প্যাচ শব্দার্থবিদ্যা আংশিক আপডেটের পুরানো GData বাস্তবায়নের চেয়ে আলাদা (এবং সহজ)।

নিচের ছোট উদাহরণটি দেখায় যে প্যাচ ব্যবহার করলে কীভাবে একটি ছোট আপডেট করার জন্য আপনার প্রয়োজনীয় ডেটা কমানো যায়।

উদাহরণ

একটি প্যাচের প্রতিক্রিয়া পরিচালনা করা

একটি বৈধ প্যাচ অনুরোধ প্রক্রিয়াকরণের পর, API পরিবর্তিত রিসোর্সের সম্পূর্ণ উপস্থাপনা সহ একটি 200 OK HTTP প্রতিক্রিয়া কোড প্রদান করে। যদি API দ্বারা ETags ব্যবহার করা হয়, তাহলে সার্ভারটি PUT এর মতোই একটি প্যাচ অনুরোধ সফলভাবে প্রক্রিয়াকরণের সময় ETag মান আপডেট করে।

প্যাচ রিকোয়েস্ট সম্পূর্ণ রিসোর্স রিপাের্টেশন ফেরত দেয়, যদি না আপনি fields প্যারামিটার ব্যবহার করে ডেটার পরিমাণ কমিয়ে দেন।

যদি কোনও প্যাচ অনুরোধের ফলে একটি নতুন রিসোর্স স্টেট তৈরি হয় যা সিনট্যাক্টিক বা শব্দার্থিকভাবে অবৈধ হয়, তাহলে সার্ভারটি একটি 400 Bad Request অথবা 422 Unprocessable Entity HTTP স্ট্যাটাস কোড ফেরত পাঠায় এবং রিসোর্স স্টেট অপরিবর্তিত থাকে। উদাহরণস্বরূপ, যদি আপনি একটি প্রয়োজনীয় ক্ষেত্রের মান মুছে ফেলার চেষ্টা করেন, তাহলে সার্ভার একটি ত্রুটি ফেরত পাঠায়।

PATCH HTTP ক্রিয়া সমর্থিত না হলে বিকল্প স্বরলিপি

যদি আপনার ফায়ারওয়াল HTTP PATCH অনুরোধগুলিকে অনুমতি না দেয়, তাহলে একটি HTTP POST অনুরোধ করুন এবং ওভাররাইড হেডারটি PATCH এ সেট করুন, যেমনটি নীচে দেখানো হয়েছে:

POST https://www.googleapis.com/...
X-HTTP-Method-Override: PATCH
...

প্যাচ এবং আপডেটের মধ্যে পার্থক্য

বাস্তবে, যখন আপনি HTTP PUT ক্রিয়া ব্যবহার করে আপডেট অনুরোধের জন্য ডেটা পাঠান, তখন আপনাকে কেবল সেই ক্ষেত্রগুলি পাঠাতে হবে যা হয় প্রয়োজনীয় বা ঐচ্ছিক; যদি আপনি সার্ভার দ্বারা সেট করা ক্ষেত্রগুলির জন্য মান পাঠান, তবে সেগুলি উপেক্ষা করা হয়। যদিও এটি আংশিক আপডেট করার অন্য উপায় বলে মনে হতে পারে, এই পদ্ধতির কিছু সীমাবদ্ধতা রয়েছে। HTTP PUT ক্রিয়া ব্যবহার করে আপডেটগুলির ক্ষেত্রে, প্রয়োজনীয় প্যারামিটার সরবরাহ না করলে অনুরোধ ব্যর্থ হয় এবং যদি আপনি ঐচ্ছিক প্যারামিটার সরবরাহ না করেন তবে এটি পূর্বে সেট করা ডেটা সাফ করে।

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