ปรับปรุงประสิทธิภาพ

เอกสารนี้ครอบคลุมเทคนิคบางอย่างที่คุณสามารถใช้เพื่อปรับปรุงประสิทธิภาพ แอปพลิเคชันของคุณ ในบางกรณี ตัวอย่างจาก API ที่ติดตั้งใช้งานอื่นๆ เพื่อให้เห็นแนวคิดที่นำเสนอ แต่ก็มีการใช้แนวคิดเดียวกัน บนหน้าจอและ API ของวิดีโอ 360

การทำงานกับทรัพยากรบางส่วน

อีกวิธีในการปรับปรุงประสิทธิภาพการเรียก API ของคุณคือการขอเฉพาะ ส่วนของข้อมูลที่คุณสนใจ ซึ่งช่วยให้แอปพลิเคชันของคุณ หลีกเลี่ยงการโอน แยกวิเคราะห์ และจัดเก็บฟิลด์ที่ไม่จำเป็นเพื่อให้สามารถใช้ ทรัพยากรอย่างเครือข่าย, CPU และหน่วยความจำได้อย่างมีประสิทธิภาพมากขึ้น

คำตอบเพียงบางส่วน

โดยค่าเริ่มต้น เซิร์ฟเวอร์จะส่งการเป็นตัวแทนแบบเต็มของทรัพยากรกลับมาหลังจาก คำขอ คุณขอให้เซิร์ฟเวอร์ส่งเพื่อประสิทธิภาพที่ดีขึ้นได้ เฉพาะช่องที่คุณต้องการ และได้รับคำตอบบางส่วนแทน

หากต้องการขอการตอบกลับบางส่วน ให้ใช้พารามิเตอร์คำขอ fields เพื่อระบุ ช่องที่ต้องการให้แสดง คุณสามารถใช้พารามิเตอร์นี้กับคำขอใดก็ได้ ซึ่งแสดงผลข้อมูลการตอบกลับ

ตัวอย่าง

ตัวอย่างต่อไปนี้แสดงการใช้พารามิเตอร์ fields กับค่า ดิสเพลย์และ API ของวิดีโอ 360

คำขอแบบง่าย: คำขอ HTTP GET นี้ข้ามพารามิเตอร์ fields และ จะแสดงแหล่งข้อมูลแบบเต็ม

GET https://displayvideo.googleapis.com/v3/advertisers?partnerId=1

การตอบกลับทรัพยากรแบบเต็ม: ข้อมูลทรัพยากรทั้งหมดจะมีข้อมูลต่อไปนี้ ตลอดจนรายการอื่นๆ ที่ตัดออกเพื่อความสั้นกระชับ

200 OK

{
 "advertisers": [
  {
   "name": "advertisers/1",
   "advertiserId": "1",
   "partnerId": "1",
   "displayName": "Example Advertiser 1",
   "entityStatus": "ENTITY_STATUS_ACTIVE",
   "updateTime": "2019-01-01T00:00:00.000000Z",
   "generalConfig": {
    "domainUrl": "http://example.com",
    "timeZone": "America/New_York",
    "currencyCode": "USD",
    "address": {
    }
   },
   "adServerConfig": {
    "thirdPartyOnlyConfig": {
    }
   },
   "creativeConfig": {
   },
   "dataAccessConfig": {
    "sdfConfig": {
     "sdfConfig": {
      "version": "VERSION_3_1"
     }
    }
   },
   "integrationDetails": {
   }
  },
  {
   "name": "advertisers/2",
   "advertiserId": "2",
   "partnerId": "1",
   "displayName": "Example Advertiser 2",
   "entityStatus": "ENTITY_STATUS_ACTIVE",
   "updateTime": "2019-01-01T00:00:00.000000Z",
   "generalConfig": {
    "domainUrl": "http://example.com",
    "timeZone": "America/New_York",
    "currencyCode": "USD",
    "address": {
    }
   },
   "adServerConfig": {
    "thirdPartyOnlyConfig": {
    }
   },
   "creativeConfig": {
   },
   "dataAccessConfig": {
    "sdfConfig": {
     "sdfConfig": {
      "version": "VERSION_3_1"
     }
    }
   },
   "integrationDetails": {
   }
  },
  ...
 ],
 "nextPageToken": "..."
}

คำขอการตอบกลับบางส่วน: คำขอต่อไปนี้สำหรับทรัพยากรเดียวกันนี้ ใช้พารามิเตอร์ fields เพื่อลดปริมาณข้อมูลที่ส่งคืนลงอย่างมาก

GET https://displayvideo.googleapis.com/v3/advertisers?partnerId=1&fields=advertisers(advertiserId,partnerId,displayName)

การตอบกลับบางส่วน: เซิร์ฟเวอร์จะส่งข้อความตอบกลับคำขอข้างต้นเพื่อตอบกลับ ที่มีอาร์เรย์ผู้ลงโฆษณาแบบแยกย่อยที่มีเฉพาะ รหัสผู้ลงโฆษณา ชื่อที่แสดง และรหัสพาร์ทเนอร์ของผู้ลงโฆษณาแต่ละราย ปัจจุบัน

200 OK

{
 "advertisers": [
  {
   "advertiserId": "1",
   "partnerId": "1",
   "displayName": "Example Advertiser 1"
  },
  {
   "advertiserId": "2",
   "partnerId": "1",
   "displayName": "Example Advertiser 2"
  },
  ...
 ]
}

โปรดทราบว่าการตอบกลับจะเป็นออบเจ็กต์ JSON ที่มีเฉพาะช่องที่เลือกเท่านั้น และออบเจ็กต์หลักที่ล้อมรอบอยู่

ดูรายละเอียดเกี่ยวกับวิธีจัดรูปแบบพารามิเตอร์ fields ในลำดับต่อไป ตามด้วย รายละเอียดเพิ่มเติมเกี่ยวกับสิ่งที่แน่นอนที่จะแสดงในคำตอบ

สรุปไวยากรณ์พารามิเตอร์ของช่อง

รูปแบบของค่าพารามิเตอร์คำขอ fields อิงตาม XPath แบบหลวมๆ ไวยากรณ์ โปรดดูสรุปไวยากรณ์ที่รองรับด้านล่าง และตัวอย่างเพิ่มเติมมีดังนี้ ที่ให้ไว้ในส่วนต่อไปนี้

  • ใช้รายการที่คั่นด้วยเครื่องหมายจุลภาคเพื่อเลือกหลายช่อง

  • ใช้ a/b เพื่อเลือกช่อง b ที่ซ้อนอยู่ภายในช่อง a ใช้ a/b/c เพื่อเลือกช่อง c ที่ซ้อนอยู่ใน b

  • ใช้ตัวเลือกย่อยเพื่อขอชุดฟิลด์ย่อยของอาร์เรย์ที่เจาะจง หรือ โดยวางนิพจน์ในวงเล็บ "( )"

    เช่น fields=advertisers(advertiserId,generalConfig/domainUrl) จะแสดงเฉพาะรหัสผู้ลงโฆษณาและ URL โดเมนสำหรับแต่ละองค์ประกอบใน ผู้ลงโฆษณาตามลำดับ นอกจากนี้ คุณยังสามารถระบุช่องย่อยช่องเดียว โดย fields=advertisers(advertiserId) เทียบเท่ากับ fields=advertisers/advertiserId

ตัวอย่างเพิ่มเติมของการใช้พารามิเตอร์ "ฟิลด์"

ตัวอย่างด้านล่างมีคำอธิบายวิธีที่ค่าพารามิเตอร์ fields ส่งผลต่อคำตอบ

ระบุช่องที่คุณต้องการให้แสดงผล หรือทำเลือกช่อง

ค่าพารามิเตอร์คำขอ fields คือรายการช่องที่คั่นด้วยคอมมา และ ระบบจะระบุแต่ละช่องโดยสัมพันธ์กับรูทของคำตอบ ดังนั้นถ้าคุณ กำลังดำเนินการ list การตอบสนองคือคอลเล็กชัน และ มักมีอาร์เรย์ของทรัพยากร หากคุณกำลังดำเนินการ ที่แสดงแหล่งข้อมูลเดียว มีการระบุช่องซึ่งสัมพันธ์กับ ทรัพยากร ถ้าฟิลด์ที่คุณเลือกเป็น (หรือเป็นส่วนหนึ่งของ) อาร์เรย์ เซิร์ฟเวอร์ จะแสดงผลส่วนที่เลือกขององค์ประกอบทั้งหมดในอาร์เรย์

ตัวอย่างระดับคอลเล็กชันบางส่วนมีดังนี้

ตัวอย่าง ผลกระทบ
advertisers แสดงองค์ประกอบทั้งหมดใน advertisers อาร์เรย์ รวม ทุกช่องในแต่ละเอลิเมนต์ แต่ ไม่มีฟิลด์อื่นๆ
advertisers,nextPageToken แสดงผลทั้ง nextPageToken และเอลิเมนต์ทั้งหมดในฟิลด์ advertisers
advertisers/advertiserId แสดงเฉพาะ advertiserId สำหรับองค์ประกอบทั้งหมดใน advertisers

เมื่อใดก็ตามที่ช่องที่ฝัง การแสดงผล การตอบกลับรวมถึง ออบเจ็กต์หลักที่ล้อมรอบอยู่ ช่องหลักจะไม่รวม ช่องย่อยอื่นๆ ยกเว้น พวกเขายังถูกเลือกอยู่ อย่างชัดเจน
advertisers/generalConfig/domainUrl แสดงช่อง domainUrl สำหรับออบเจ็กต์ generalConfig ซึ่งฝังอยู่ใต้ advertisers อาร์เรย์

ตัวอย่างระดับทรัพยากรบางส่วนมีดังนี้

ตัวอย่าง ผลกระทบ
advertiserId แสดงช่อง advertiserId ของทรัพยากรที่ขอ
generalConfig/domainUrl แสดงช่อง domainUrl สำหรับออบเจ็กต์ generalConfig ในทรัพยากรที่ขอ
ขอเฉพาะบางช่องโดยใช้การเลือกย่อย

โดยค่าเริ่มต้น หากคำขอของคุณระบุฟิลด์เฉพาะ เซิร์ฟเวอร์จะส่งกลับ ออบเจ็กต์หรืออาร์เรย์องค์ประกอบ ให้ครบถ้วนสมบูรณ์ คุณระบุการตอบกลับได้ ที่มีเฉพาะฟิลด์ย่อยบางฟิลด์ คุณดำเนินการนี้โดยใช้ "( )" ไวยากรณ์การเลือกย่อย ดังที่แสดงในตัวอย่างด้านล่าง

ตัวอย่าง ผลกระทบ
advertisers(advertiserId,generalConfig/domainUrl) แสดงเฉพาะ ค่าของ advertiserId และ GeneralConfig domainUrlสำหรับ แต่ละองค์ประกอบใน advertisers อาร์เรย์
การจัดการคำตอบบางส่วน

หลังจากที่เซิร์ฟเวอร์ประมวลผลคำขอที่ถูกต้องซึ่งมีการค้นหา fields แล้ว ระบบจะส่งรหัสสถานะ HTTP 200 OK กลับมา พร้อมกับแท็ก หากพารามิเตอร์การค้นหา fields มีข้อผิดพลาดหรือไม่ถูกต้อง เซิร์ฟเวอร์แสดงรหัสสถานะ HTTP 400 Bad Request พร้อมข้อผิดพลาด ที่บอกว่าการเลือกฟิลด์มีปัญหาอย่างไร (เช่น "Invalid field selection a/b")