কর্মক্ষমতা টিপস

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

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

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

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

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

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

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

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

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

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

উদাহরণ

নিম্নলিখিত উদাহরণটি একটি জেনেরিক (কাল্পনিক) "ডেমো" API-এর সাথে fields প্যারামিটারের ব্যবহার দেখায়।

সহজ অনুরোধ: এই HTTP GET অনুরোধটি fields প্যারামিটার বাদ দেয় এবং সম্পূর্ণ রিসোর্স ফেরত দেয়।

https://www.googleapis.com/demo/v1

সম্পূর্ণ রিসোর্স প্রতিক্রিয়া: সম্পূর্ণ রিসোর্স ডেটাতে নিম্নলিখিত ক্ষেত্রগুলি অন্তর্ভুক্ত রয়েছে, সংক্ষিপ্ততার জন্য বাদ দেওয়া হয়েছে এমন আরও অনেক ক্ষেত্র সহ।

{
  "kind": "demo",
  ...
  "items": [
  {
    "title": "First title",
    "comment": "First comment.",
    "characteristics": {
      "length": "short",
      "accuracy": "high",
      "followers": ["Jo", "Will"],
    },
    "status": "active",
    ...
  },
  {
    "title": "Second title",
    "comment": "Second comment.",
    "characteristics": {
      "length": "long",
      "accuracy": "medium"
      "followers": [ ],
    },
    "status": "pending",
    ...
  },
  ...
  ]
}

আংশিক প্রতিক্রিয়ার জন্য অনুরোধ: এই একই রিসোর্সের জন্য নিম্নলিখিত অনুরোধটি fields প্যারামিটার ব্যবহার করে উল্লেখযোগ্যভাবে ডেটা ফেরত দেওয়ার পরিমাণ হ্রাস করে।

https://www.googleapis.com/demo/v1?fields=kind,items(title,characteristics/length)

আংশিক প্রতিক্রিয়া: উপরের অনুরোধের প্রতিক্রিয়ায়, সার্ভার একটি প্রতিক্রিয়া পাঠায় যাতে শুধুমাত্র ধরণের তথ্য থাকে এবং একটি ছোট আইটেম অ্যারে থাকে যাতে প্রতিটি আইটেমের শুধুমাত্র HTML শিরোনাম এবং দৈর্ঘ্যের বৈশিষ্ট্যগত তথ্য থাকে।

200 OK
{
  "kind": "demo",
  "items": [{
    "title": "First title",
    "characteristics": {
      "length": "short"
    }
  }, {
    "title": "Second title",
    "characteristics": {
      "length": "long"
    }
  },
  ...
  ]
}

মনে রাখবেন যে প্রতিক্রিয়াটি একটি JSON অবজেক্ট যাতে শুধুমাত্র নির্বাচিত ক্ষেত্রগুলি এবং তাদের আবদ্ধ প্যারেন্ট অবজেক্টগুলি অন্তর্ভুক্ত থাকে।

fields প্যারামিটার কীভাবে ফর্ম্যাট করতে হয় তার বিস্তারিত তথ্য পরবর্তীতে আলোচনা করা হবে, তারপরে প্রতিক্রিয়ায় ঠিক কী ফেরত দেওয়া হবে সে সম্পর্কে আরও বিস্তারিত তথ্য দেওয়া হবে।

ফিল্ডস প্যারামিটার সিনট্যাক্সের সারাংশ

fields রিকোয়েস্ট প্যারামিটার মানের ফর্ম্যাটটি XPath সিনট্যাক্সের উপর ভিত্তি করে তৈরি। সমর্থিত সিনট্যাক্সটি নীচে সংক্ষিপ্ত করা হয়েছে, এবং নিম্নলিখিত বিভাগে অতিরিক্ত উদাহরণ প্রদান করা হয়েছে।

  • একাধিক ক্ষেত্র নির্বাচন করতে কমা দ্বারা পৃথক করা তালিকা ব্যবহার করুন।
  • a/b ব্যবহার করে a ফিল্ডের মধ্যে নেস্টেড b ফিল্ড নির্বাচন করুন; a/b/c ব্যবহার করে b এর মধ্যে নেস্টেড c ফিল্ড নির্বাচন করুন।

    ব্যতিক্রম: "ডেটা" র‍্যাপার ব্যবহার করে এমন API প্রতিক্রিয়াগুলির জন্য, যেখানে প্রতিক্রিয়াটি data: { ... } মতো দেখতে data অবজেক্টের মধ্যে নেস্ট করা হয়: { ... }, fields স্পেসিফিকেশনে " data " অন্তর্ভুক্ত করবেন না। ডেটা অবজেক্টকে data/a/b মতো ফিল্ড স্পেসিফিকেশন সহ অন্তর্ভুক্ত করলে ত্রুটি দেখা দেয়। পরিবর্তে, কেবল a/b মতো fields স্পেসিফিকেশন ব্যবহার করুন।

  • বন্ধনীতে " ( ) " এক্সপ্রেশন স্থাপন করে অ্যারে বা বস্তুর নির্দিষ্ট উপ-ক্ষেত্রের একটি সেট অনুরোধ করতে একটি সাব-সিলেক্টর ব্যবহার করুন।

    উদাহরণস্বরূপ: fields=items(id,author/email) আইটেম অ্যারের প্রতিটি উপাদানের জন্য শুধুমাত্র আইটেম আইডি এবং লেখকের ইমেল ফেরত দেয়। আপনি একটি একক সাব-ফিল্ডও নির্দিষ্ট করতে পারেন, যেখানে fields=items(id) fields=items/id এর সমতুল্য।

  • প্রয়োজনে ফিল্ড নির্বাচনে ওয়াইল্ডকার্ড ব্যবহার করুন।

    উদাহরণস্বরূপ: fields=items/pagemap/* একটি পেজম্যাপের সমস্ত বস্তু নির্বাচন করে।

ক্ষেত্র পরামিতি ব্যবহারের আরও উদাহরণ

নিচের উদাহরণগুলিতে fields প্যারামিটারের মান কীভাবে প্রতিক্রিয়াকে প্রভাবিত করে তার বর্ণনা অন্তর্ভুক্ত রয়েছে।

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

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

এখানে কিছু সংগ্রহ-স্তরের উদাহরণ দেওয়া হল:
উদাহরণ প্রভাব
items আইটেম অ্যারের সমস্ত উপাদান ফেরত পাঠায়, প্রতিটি উপাদানের সমস্ত ক্ষেত্র সহ, কিন্তু অন্য কোনও ক্ষেত্র নয়।
etag,items etag ক্ষেত্র এবং আইটেম অ্যারের সকল উপাদান উভয়ই ফেরত পাঠায়।
items/title আইটেম অ্যারের সকল উপাদানের জন্য শুধুমাত্র title ক্ষেত্রটি ফেরত পাঠায়।

যখনই একটি নেস্টেড ফিল্ড রিটার্ন করা হয়, তখন রেসপন্সে এনক্লোজিং প্যারেন্ট অবজেক্ট অন্তর্ভুক্ত থাকে। প্যারেন্ট ফিল্ডগুলিতে অন্য কোনও চাইল্ড ফিল্ড অন্তর্ভুক্ত থাকে না যদি না সেগুলি স্পষ্টভাবে নির্বাচিত হয়।
context/facets/label facets অ্যারের সকল সদস্যের জন্য শুধুমাত্র label ক্ষেত্রটি ফেরত দেয়, যা নিজেই context object এর অধীনে নেস্টেড থাকে।
items/pagemap/*/title আইটেম অ্যারের প্রতিটি উপাদানের জন্য, pagemap শিশু সকল বস্তুর শুধুমাত্র title ক্ষেত্র (যদি উপস্থিত থাকে) প্রদান করে।

এখানে কিছু রিসোর্স-স্তরের উদাহরণ দেওয়া হল:
উদাহরণ প্রভাব
title অনুরোধকৃত রিসোর্সের title ক্ষেত্রটি প্রদান করে।
author/uri অনুরোধকৃত রিসোর্সে author অবজেক্টের uri সাব-ফিল্ড রিটার্ন করে।
links/*/href
links সন্তান সকল বস্তুর href ক্ষেত্র প্রদান করে।
উপ-নির্বাচন ব্যবহার করে শুধুমাত্র নির্দিষ্ট ক্ষেত্রের কিছু অংশের জন্য অনুরোধ করুন।
ডিফল্টরূপে, যদি আপনার অনুরোধ নির্দিষ্ট ক্ষেত্রগুলি নির্দিষ্ট করে, সার্ভারটি বস্তু বা অ্যারের উপাদানগুলিকে সম্পূর্ণরূপে ফেরত দেয়। আপনি এমন একটি প্রতিক্রিয়া নির্দিষ্ট করতে পারেন যাতে কেবল নির্দিষ্ট উপ-ক্ষেত্র অন্তর্ভুক্ত থাকে। আপনি নীচের উদাহরণের মতো " ( ) " উপ-নির্বাচন সিনট্যাক্স ব্যবহার করে এটি করেন।
উদাহরণ প্রভাব
items(title,author/uri) আইটেম অ্যারের প্রতিটি উপাদানের জন্য শুধুমাত্র title এবং লেখকের uri এর মান প্রদান করে।

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

একটি সার্ভার একটি বৈধ অনুরোধ প্রক্রিয়া করার পর, যাতে fields কোয়েরি প্যারামিটার অন্তর্ভুক্ত থাকে, এটি অনুরোধকৃত ডেটা সহ একটি HTTP 200 OK স্ট্যাটাস কোড ফেরত পাঠায়। যদি fields কোয়েরি প্যারামিটারে কোনও ত্রুটি থাকে বা অন্যথায় অবৈধ হয়, তাহলে সার্ভার একটি HTTP 400 Bad Request স্ট্যাটাস কোড ফেরত দেয়, এবং একটি ত্রুটি বার্তা সহ ব্যবহারকারীকে তাদের ফিল্ডস নির্বাচনের সাথে কী ভুল ছিল তা জানায় (উদাহরণস্বরূপ, "Invalid field selection a/b" )।

উপরের ভূমিকা বিভাগে দেখানো আংশিক প্রতিক্রিয়ার উদাহরণ এখানে। কোন ক্ষেত্রগুলি ফেরত দিতে হবে তা নির্দিষ্ট করার জন্য অনুরোধটি fields পরামিতি ব্যবহার করে।

https://www.googleapis.com/demo/v1?fields=kind,items(title,characteristics/length)

আংশিক প্রতিক্রিয়াটি এরকম দেখাচ্ছে:

200 OK
{
  "kind": "demo",
  "items": [{
    "title": "First title",
    "characteristics": {
      "length": "short"
    }
  }, {
    "title": "Second title",
    "characteristics": {
      "length": "long"
    }
  },
  ...
  ]
}

দ্রষ্টব্য: যেসব API ডেটা পেজিনেশনের জন্য কোয়েরি প্যারামিটার সমর্থন করে (উদাহরণস্বরূপ, maxResults এবং nextPageToken ), প্রতিটি কোয়েরির ফলাফলকে একটি পরিচালনাযোগ্য আকারে কমাতে এই প্যারামিটারগুলি ব্যবহার করুন। অন্যথায়, আংশিক প্রতিক্রিয়ার মাধ্যমে সম্ভাব্য কর্মক্ষমতা লাভ অর্জন করা সম্ভব নাও হতে পারে।