مقدمه
این سند برای توسعهدهندگانی است که میخواهند برنامههایی بنویسند که با YouTube تعامل داشته باشند. این سند مفاهیم پایه YouTube و خود API را توضیح میدهد. همچنین نمای کلی از عملکردهای مختلفی که میانای برنامهسازی کاربردی پشتیبانی میکند ارائه میدهد.
قبلاز شروع
-
برای دسترسی به کنسول Google Cloud، درخواست کلید میانای برنامهسازی کاربردی، و ثبت برنامه، به حساب Google نیاز دارید.
-
پروژهای در Google Developers Console ایجاد کنید و اعتبارنامه مجوز را دریافت کنید تا برنامهتان بتواند درخواستهای API را ارسال کند.
-
پساز ایجاد پروژه، مطمئن شوید که YouTube Data API یکی از سرویسهایی است که برنامه شما برای استفاده از آن ثبت شده است:
- به کنسول Cloud بروید و پروژهای را که بهتازگی ثبت کردهاید انتخاب کنید.
- به صفحه میاناهای برنامهسازی کاربردی فعالشده بروید. مطمئن شوید که YouTube Data API در فهرست میاناهای برنامهسازی کاربردی فعالشده قرار دارد. اگر فعال نیست، «کتابخانه API» را باز کنید و API را فعال کنید.
-
اگر برنامه شما از روشهای میانای برنامهسازی کاربردی (API) استفاده میکند که به مجوز کاربر نیاز دارد، راهنمای اصالتسنجی را بخوانید تا با نحوه پیادهسازی مجوز OAuth 2.0 آشنا شوید.
-
برای ساده کردن پیادهسازی میانای برنامهسازی کاربردی، کتابخانه کارخواه را انتخاب کنید.
-
با مفاهیم اصلی قالب داده JSON (نشانگذاری شیء جاوا اسکریپت) آشنا شوید. JSON قالب داده رایج و مستقل از زبانی است که نمایش نوشتاری سادهای از ساختارهای داده دلخواه ارائه میدهد. برای اطلاعات بیشتر، به json.org مراجعه کنید.
منابع و انواع منبع
منبع یک موجودیت داده تکی با شناسه یکتا است. جدول زیر انواع مختلف منابعی را که میتوانید بااستفاده از میانای برنامهسازی کاربردی با آنها تعامل داشته باشید شرح میدهد.
| منابع | |
|---|---|
activity |
شامل اطلاعاتی درباره اقدامی است که یک کاربر خاص در سایت YouTube انجام داده است. کنشهای کاربر که در فیدهای فعالیت گزارش میشوند شامل رتبهبندی ویدیو، همرسانی ویدیو، علامتگذاری ویدیو بهعنوان موردپسند، و پست کردن اعلامیه کانال، و غیره است. |
channel |
حاوی اطلاعات مربوط به یک کانال YouTube است. |
channelBanner |
نشانی وبی را که برای تنظیم تصویر بارگذاریشده جدید بهعنوان تصویر برنمای کانال استفاده میشود شناسایی میکند. |
channelSection |
حاوی اطلاعاتی درباره مجموعهای از ویدیوها است که کانال برای نمایش انتخاب کرده است. برای مثال، یک بخش میتواند جدیدترین بارگذاریهای کانال، محبوبترین بارگذاریها، یا ویدیوهای یک یا چند فهرست پخش را نمایش دهد. |
guideCategory |
دستهای را شناسایی میکند که YouTube براساس محتوا یا شاخصهای دیگر، مانند محبوبیت، با کانالها مرتبط میکند. دستههای راهنما سعی دارند کانالها را به گونهای سازماندهی کنند که کاربران YouTube بتوانند محتوای موردنظر خود را راحتتر پیدا کنند. درحالیکه کانالها میتوانند با یک یا چند دسته راهنما مرتبط باشند، تضمینی وجود ندارد که در هیچیک از دستههای راهنما قرار بگیرند. |
i18nLanguage |
زبان برنامهای را که وبسایت YouTube پشتیبانی میکند شناسایی میکند. زبان برنامه را میتوان زبان واسط کاربر نیز نامید. |
i18nRegion |
منطقه جغرافیایی را که کاربر YouTube میتواند بهعنوان منطقه محتوای ترجیحی انتخاب کند شناسایی میکند. منطقه محتوا را میتوان بهعنوان منطقه زبانی محتوا نیز نامید. |
playlist |
نشاندهنده یک فهرست پخش YouTube است. فهرست پخش مجموعهای از ویدیوها است که میتوان آنها را بهصورت متوالی مشاهده کرد و با کاربران دیگر همرسانی کرد. |
playlistItem |
منبعی را شناسایی میکند، مانند ویدیو، که بخشی از فهرست پخش است. منبع playlistItem همچنین حاوی جزئیاتی است که نحوه استفاده از منبع گنجانده شده در فهرست پخش را توضیح میدهد. |
search result |
حاوی اطلاعاتی درباره ویدیو، کانال، یا فهرست پخش YouTube است که با پارامترهای جستجوی مشخصشده در درخواست API مطابقت دارد. درحالیکه نتیجه جستجو به یک منبع قابلشناسایی منحصربهفرد، مانند یک ویدیو، اشاره میکند، دادههای ماندگار خود را ندارد. |
subscription |
شامل اطلاعاتی درباره اشتراک کاربر YouTube است. اشتراک زمانی به کاربر اطلاع میدهد که ویدیوهای جدید به یک کانال اضافه میشوند یا زمانی که کاربر دیگری یکی از چندین اقدام در YouTube را انجام میدهد، مانند بارگذاری ویدیو، رتبهبندی ویدیو، یا نظر دادن روی ویدیو. |
thumbnail |
تصاویر کوچک مرتبط با منبع را شناسایی میکند. |
video |
یک ویدیو YouTube را نشان میدهد. |
videoCategory |
دستهای را که با ویدیوهای بارگذاریشده مرتبط بوده یا میتواند مرتبط باشد شناسایی میکند. |
watermark |
تصویری را که درطول بازپخش ویدیوهای یک کانال مشخص نمایش داده میشود شناسایی میکند. مالک کانال همچنین میتواند کانال هدفی را که تصویر به آن پیوند میدهد و همچنین جزئیات زمانبندی را که تعیین میکند تهنقش چه زمانی درطول بازپخش ویدیو ظاهر شود و مدتزمانی که قابلمشاهده است، مشخص کند. |
توجه داشته باشید که در بسیاری از موارد، یک منبع حاوی ارجاع به منابع دیگر است. برای مثال، ویژگی snippet.resourceId.videoId منبع playlistItem منبع ویدیویی را شناسایی میکند که بهنوبه خود حاوی اطلاعات کامل درباره ویدیو است. بهعنوان مثالی دیگر، نتیجه جستجو شامل یک ویژگی videoId، playlistId، یا channelId است که یک ویدیو، فهرست پخش، یا منبع کانال خاص را شناسایی میکند.
عملیات پشتیبانیشده
جدول زیر رایجترین روشهایی را که API پشتیبانی میکند نشان میدهد. برخیاز منابع از روشهای دیگری نیز پشتیبانی میکنند که عملکردهای خاصتری را برای آن منابع انجام میدهند. برای مثال، روش videos.rate رتبهبندی کاربر را با ویدیو مرتبط میکند و روش thumbnails.set تصویر ریزعکس ویدیو را در YouTube بارگذاری میکند و آن را با ویدیو مرتبط میکند.
| عملیات | |
|---|---|
list |
فهرستی از صفر یا چند منبع را بازیابی میکند (GET). |
insert |
منبع جدیدی ایجاد میکند (POST). |
update |
منبع موجودی را (PUT) تغییر میدهد تا دادههای درخواستتان را منعکس کند. |
delete |
منبع خاصی را برمیدارد (DELETE). |
این میانای برنامهسازی کاربردی درحالحاضر از روشهایی برای فهرست کردن هریک از انواع منابع پشتیبانیشده پشتیبانی میکند و همچنین از عملیات نوشتن برای بسیاری از منابع پشتیبانی میکند.
جدول زیر عملیاتهایی را که برای انواع مختلف منابع پشتیبانی میشود مشخص میکند. عملیاتی که منابع را درج، بهروزرسانی، یا حذف میکنند همیشه به مجوز کاربر نیاز دارند. در برخی موارد، روشهای list از درخواستهای مجاز و غیرمجاز پشتیبانی میکنند، که در آن درخواستهای غیرمجاز فقط دادههای عمومی را بازیابی میکنند، درحالیکه درخواستهای مجاز میتوانند اطلاعات مربوط به کاربر فعلی اصالتسنجیشده یا خصوصی او را نیز بازیابی کنند.
| عملیات پشتیبانیشده | ||||
|---|---|---|---|---|
| list | insert | update | delete | |
activity |
||||
caption |
||||
channel |
||||
channelBanner |
||||
channelSection |
||||
comment |
||||
commentThread |
||||
guideCategory |
||||
i18nLanguage |
||||
i18nRegion |
||||
playlist |
||||
playlistItem |
||||
search result |
||||
subscription |
||||
thumbnail |
||||
video |
||||
videoCategory |
||||
watermark |
||||
مصرف سهمیه
YouTube Data API از سهمیه استفاده میکند تا مطمئن شود توسعهدهندگان از سرویس بهطور صحیح استفاده میکنند و برنامههایی ایجاد نمیکنند که بهطور ناعادلانه کیفیت سرویس را کاهش دهد یا دسترسی دیگران را محدود کند. همه درخواستهای API، ازجمله درخواستهای نامعتبر، حداقل یک امتیاز هزینه سهمیه دارند. میتوانید سهمیه دردسترس برای برنامهتان را در API Console پیدا کنید.
پروژههایی که YouTube Data API را فعال میکنند، دارای تخصیص سهمیه پیشفرض ۱۰۰ search.list تماس، ۱۰۰ videos.insert تماس، و ۱۰٬۰۰۰ واحد در روز بهصورت ترکیبی برای همه نقاط پایانی دیگر هستند. سهمیه پیشفرض، که ممکن است تغییر کند، به ما کمک میکند تخصیصهای سهمیه را بهینه کنیم و زیرساخت خود را به روشی که برای کاربران API ما معنادارتر است مقیاسبندی کنیم. میتوانید میزان استفاده از سهمیه را در صفحه سهمیهها در «کنسول API» ببینید.
توجه: اگر به حد سهمیه رسیدید، میتوانید با تکمیل فرم درخواست افزایش سهمیه برای «خدمات API YouTube»، سهمیه اضافی درخواست کنید.
درحال محاسبه استفاده از سهمیه
Google با اختصاص دادن هزینه به هر درخواست، میزان استفاده از سهمیه را محاسبه میکند. انواع مختلف عملیات هزینههای سهمیه متفاوتی دارند. برای مثال:
- یک عملیات خواندن که فهرستی از منابع (کانالها، ویدیوها، فهرستهای پخش) را بازیابی میکند، معمولاً ۱ واحد هزینه دارد.
- عملیات نوشتن که منبعی را ایجاد، بهروزرسانی، یا حذف میکند معمولاً
50واحد هزینه دارد. - پرسمان جستجو
1واحد هزینه دارد. - بارگذاری ویدیو
1واحد هزینه دارد.
جدول هزینههای سهمیه برای درخواستهای API هزینه سهمیه هر روش API را نشان میدهد. با درنظر گرفتن این قوانین، میتوانید تعداد درخواستهایی را که برنامهتان میتواند در روز ارسال کند بدون اینکه از سهمیهتان فراتر رود تخمین بزنید.
منابع جزئی
این API امکان بازیابی منابع جزئی را فراهم میکند و درواقع آن را الزامی میکند تا برنامهها از انتقال، تجزیه، و ذخیره دادههای غیرضروری اجتناب کنند. این رویکرد همچنین تضمین میکند که میانای برنامهسازی کاربردی از منابع شبکه، CPU، و حافظه بهطور کارآمدتری استفاده میکند.
این API از دو پارامتر درخواست پشتیبانی میکند که در بخشهای زیر توضیح داده شدهاند و به شما امکان میدهند ویژگیهای منبعی را که باید در پاسخهای API گنجانده شوند شناسایی کنید.
- پارامتر
partگروههایی از ویژگیها را که باید برای منبع برگردانده شوند شناسایی میکند. - پارامتر
fieldsپاسخ میانای برنامهسازی کاربردی را فیلتر میکند تا فقط ویژگیهای خاصی را در بخشهای منبع درخواستشده برگرداند.
نحوه استفاده از پارامتر part
پارامتر part یک پارامتر الزامی برای هر درخواست API است که منبعی را بازیابی یا برمیگرداند. این پارامتر یک یا چند ویژگی منبع سطح بالا (غیرتودرتو) را که باید در پاسخ میانای برنامهسازی کاربردی گنجانده شود شناسایی میکند. برای مثال، یک منبع video دارای بخشهای زیر است:
snippetcontentDetailsfileDetailsplayerprocessingDetailsrecordingDetailsstatisticsstatussuggestionstopicDetails
همه این بخشها اشیایی هستند که حاوی داراییهای تودرتو هستند و میتوانید این اشیا را بهعنوان گروههایی از فیلدهای فراداده درنظر بگیرید که ممکن است کارگزار API آنها را بازیابی کند (یا نکند). به همین دلیل، پارامتر part از شما میخواهد مؤلفههای منبعی را که برنامهتان واقعاً استفاده میکند انتخاب کنید. این الزام دو هدف کلیدی را دنبال میکند:
- این کار با جلوگیری از صرف زمان سرور API برای بازیابی فیلدهای فرادادهای که برنامه شما استفاده نمیکند، تأخیر را کاهش میدهد.
- این کار با کاهش (یا حذف) مقدار دادههای غیرضروری که ممکن است برنامه شما بازیابی کند، مصرف پهنای باند را کاهش میدهد.
با گذشت زمان، با افزودن بخشهای بیشتر توسط منابع، این مزایا افزایش مییابد زیرا برنامه شما ویژگیهای جدید معرفیشدهای را که پشتیبانی نمیکند درخواست نخواهد کرد.
نحوه استفاده از پارامتر fields
پارامتر fields پاسخ API را فیلتر میکند، که فقط شامل بخشهای منبع شناساییشده در مقدار پارامتر part است، بنابراین پاسخ فقط شامل مجموعه خاصی از فیلدها میشود. پارامتر fields به شما امکان میدهد ویژگیهای تودرتو را از پاسخ میانای برنامهسازی کاربردی بردارید و درنتیجه مصرف پهنای باندتان را بیشتر کاهش دهید. (از پارامتر part نمیتوان برای فیلتر کردن داراییهای تودرتو از پاسخ استفاده کرد.)
قوانین زیر ساختار پشتیبانیشده برای مقدار پارامتر fields را توضیح میدهد که بهطور تقریبی براساس ساختار XPath است:
- برای انتخاب چند فیلد، از فهرست جداشده با کاما (
fields=a,b) استفاده کنید. - از ستاره (
fields=*) بهعنوان کارت آزاد برای شناسایی همه فیلدها استفاده کنید. - از پرانتز (
fields=a(b,c)) برای مشخص کردن گروهی از داراییهای تودرتو که در پاسخ میانای برنامهسازی کاربردی گنجانده خواهد شد استفاده کنید. - از کجخط روبهجلو (
fields=a/b) برای شناسایی ویژگی تودرتو استفاده کنید.
در عمل، این قوانین اغلب به چندین مقدار پارامتر fields مختلف اجازه میدهند تا همان پاسخ میانای برنامهسازی کاربردی را بازیابی کنند. برای مثال، اگر میخواهید شناسه، عنوان، و موقعیت عنصر فهرست پخش را برای هر عنصر در فهرست پخش بازیابی کنید، میتوانید از هریک از مقادیر زیر استفاده کنید:
fields=items/id,playlistItems/snippet/title,playlistItems/snippet/positionfields=items(id,snippet/title,snippet/position)fields=items(id,snippet(title,position))
توجه: مانند همه مقادیر پارامتر پُرسمان، مقدار پارامتر fields باید کدبندی نشانی وب شود. برای خوانایی بهتر، مثالهای این سند کدبندی را حذف میکنند.
درخواستهای جزئی نمونه
مثالهای زیر نشان میدهد که چگونه میتوانید از پارامترهای part و fields استفاده کنید تا مطمئن شوید پاسخهای API فقط شامل دادههایی است که برنامه شما استفاده میکند:
- مثال ۱ منبع ویدیویی را برمیگرداند که شامل چهار بخش و همچنین ویژگیهای
kindوetagاست. - مثال ۲ منبع ویدیویی را برمیگرداند که شامل دو بخش و همچنین ویژگیهای
kindوetagاست. - مثال ۳ منبع ویدیویی را برمیگرداند که شامل دو بخش است اما ویژگیهای
kindوetagرا مستثنی میکند. - مثال ۴ منبع ویدیویی را برمیگرداند که شامل دو بخش است اما
kindوetagو همچنین برخی ویژگیهای تودرتو در شیءsnippetمنبع را مستثنی میکند.
URL: https://www.googleapis.com/youtube/v3/videos?id=7lCDEYXw3mM&key=YOUR_API_KEY
&part=snippet,contentDetails,statistics,status Description: This example retrieves avideoresource and identifies several resource parts that should be included in the API response. API response:{ "kind": "youtube#videoListResponse", "etag": "\"UCBpFjp2h75_b92t44sqraUcyu0/sDAlsG9NGKfr6v5AlPZKSEZdtqA\"", "videos": [ { "id": "7lCDEYXw3mM", "kind": "youtube#video", "etag": "\"UCBpFjp2h75_b92t44sqraUcyu0/iYynQR8AtacsFUwWmrVaw4Smb_Q\"", "snippet": { "publishedAt": "2012-06-20T22:45:24.000Z", "channelId": "UC_x5XG1OV2P6uZZ5FSM9Ttw", "title": "Google I/O 101: Q&A On Using Google APIs", "description": "Antonio Fuentes speaks to us and takes questions on working with Google APIs and OAuth 2.0.", "thumbnails": { "default": { "url": "https://i.ytimg.com/vi/7lCDEYXw3mM/default.jpg" }, "medium": { "url": "https://i.ytimg.com/vi/7lCDEYXw3mM/mqdefault.jpg" }, "high": { "url": "https://i.ytimg.com/vi/7lCDEYXw3mM/hqdefault.jpg" } }, "categoryId": "28" }, "contentDetails": { "duration": "PT15M51S", "aspectRatio": "RATIO_16_9" }, "statistics": { "viewCount": "3057", "likeCount": "25", "dislikeCount": "0", "favoriteCount": "17", "commentCount": "12" }, "status": { "uploadStatus": "STATUS_PROCESSED", "privacyStatus": "PRIVACY_PUBLIC" } } ] }
URL: https://www.googleapis.com/youtube/v3/videos?id=7lCDEYXw3mM&key=YOUR_API_KEY
&part=snippet,statistics Description: This example modifies thepartparameter value so that thecontentDetailsandstatusproperties are not included in the response. API response:{ "kind": "youtube#videoListResponse", "etag": "\"UCBpFjp2h75_b92t44sqraUcyu0/sDAlsG9NGKfr6v5AlPZKSEZdtqA\"", "videos": [ { "id": "7lCDEYXw3mM", "kind": "youtube#video", "etag": "\"UCBpFjp2h75_b92t44sqraUcyu0/iYynQR8AtacsFUwWmrVaw4Smb_Q\"", "snippet": { "publishedAt": "2012-06-20T22:45:24.000Z", "channelId": "UC_x5XG1OV2P6uZZ5FSM9Ttw", "title": "Google I/O 101: Q&A On Using Google APIs", "description": "Antonio Fuentes speaks to us and takes questions on working with Google APIs and OAuth 2.0.", "thumbnails": { "default": { "url": "https://i.ytimg.com/vi/7lCDEYXw3mM/default.jpg" }, "medium": { "url": "https://i.ytimg.com/vi/7lCDEYXw3mM/mqdefault.jpg" }, "high": { "url": "https://i.ytimg.com/vi/7lCDEYXw3mM/hqdefault.jpg" } }, "categoryId": "28" }, "statistics": { "viewCount": "3057", "likeCount": "25", "dislikeCount": "0", "favoriteCount": "17", "commentCount": "12" } } ] }
URL: https://www.googleapis.com/youtube/v3/videos?id=7lCDEYXw3mM&key=YOUR_API_KEY
&part=snippet,statistics&fields=items(id,snippet,statistics) Description: This example adds thefieldsparameter to remove allkindandetagproperties from the API response. API response:{ "videos": [ { "id": "7lCDEYXw3mM", "snippet": { "publishedAt": "2012-06-20T22:45:24.000Z", "channelId": "UC_x5XG1OV2P6uZZ5FSM9Ttw", "title": "Google I/O 101: Q&A On Using Google APIs", "description": "Antonio Fuentes speaks to us and takes questions on working with Google APIs and OAuth 2.0.", "thumbnails": { "default": { "url": "https://i.ytimg.com/vi/7lCDEYXw3mM/default.jpg" }, "medium": { "url": "https://i.ytimg.com/vi/7lCDEYXw3mM/mqdefault.jpg" }, "high": { "url": "https://i.ytimg.com/vi/7lCDEYXw3mM/hqdefault.jpg" } }, "categoryId": "28" }, "statistics": { "viewCount": "3057", "likeCount": "25", "dislikeCount": "0", "favoriteCount": "17", "commentCount": "12" } } ] }
URL: https://www.googleapis.com/youtube/v3/videos?id=7lCDEYXw3mM&key=YOUR_API_KEY
&fields=items(id,snippet(channelId,title,categoryId),statistics)&part=snippet,statistics Description: This example modifies thefieldsparameter from example 3 so that in the API response, each video resource'ssnippetobject only includes thechannelId,title, andcategoryIdproperties. API response:{ "videos": [ { "id": "7lCDEYXw3mM", "snippet": { "channelId": "UC_x5XG1OV2P6uZZ5FSM9Ttw", "title": "Google I/O 101: Q&A On Using Google APIs", "categoryId": "28" }, "statistics": { "viewCount": "3057", "likeCount": "25", "dislikeCount": "0", "favoriteCount": "17", "commentCount": "12" } } ] }
درحال بهینهسازی عملکرد
استفاده از ETags
ETags، بخش استانداردی از پروتکل HTTP، به برنامهها اجازه میدهد به نسخه خاصی از منبع میانای برنامهسازی کاربردی خاصی ارجاع دهند. منبع میتواند کل فید یا یک مورد در آن فید باشد. این عملکرد از موارد استفاده زیر پشتیبانی میکند:
-
ذخیره در حافظه نهان و بازیابی شرطی – برنامه شما میتواند منابع API و ETag آنها را در حافظه نهان ذخیره کند. سپس، وقتی برنامه شما دوباره منبع ذخیرهشدهای را درخواست میکند، ETag مرتبط با آن منبع را مشخص میکند. اگر منبع تغییر کرده باشد، API منبع اصلاحشده و ETag مرتبط با آن نسخه از منبع را برمیگرداند. اگر منبع تغییر نکرده باشد، API پاسخ HTTP 304 (
Not Modified) را برمیگرداند که نشان میدهد منبع تغییر نکرده است. برنامه شما میتواند با ارائه منابع ذخیرهشده در حافظه نهان به این روش، تأخیر و استفاده از پهنای باند را کاهش دهد.کتابخانههای کارخواه برای «میاناهای برنامهسازی کاربردی Google» در پشتیبانی از ETags متفاوت هستند. برای مثال، کتابخانه مشتری JavaScript از ETags ازطریق فهرست سفید برای سرایندهای درخواست مجاز که شامل
If-MatchوIf-None-Matchاست پشتیبانی میکند. فهرست سفید اجازه میدهد حافظه پنهان مرورگر عادی اتفاق بیفتد تا اگر ETag منبع تغییر نکرده باشد، منبع بتواند از حافظه پنهان مرورگر ارائه شود. ازسویدیگر، کارخواه Obj-C از ETags پشتیبانی نمیکند. -
محافظت دربرابر بازنویسی ناخواسته تغییرات – ETags کمک میکند تا اطمینان حاصل شود که چندین کارخواه میانای برنامهسازی کاربردی بهطور ناخواسته تغییرات یکدیگر را بازنویسی نمیکنند. هنگام بهروزرسانی یا حذف منبع، برنامه شما میتواند ETag منبع را مشخص کند. اگر ETag با جدیدترین نسخه آن منبع مطابقت نداشته باشد، درخواست API ناموفق خواهد بود.
استفاده از ETag در برنامهتان چندین مزیت دارد:
- میانای برنامهسازی کاربردی به درخواستهای منابع ذخیرهشده در حافظه نهان اما تغییرنیافته سریعتر پاسخ میدهد و درنتیجه تأخیر و مصرف پهنای باند کاهش مییابد.
- برنامه شما بهطور ناخواسته تغییرات منبعی را که از مشتری API دیگری ایجاد شده است رونویسی نخواهد کرد.
Google APIs Client Library for JavaScript از سرصفحههای درخواست اچتیتیپی If-Match و If-None-Match پشتیبانی میکند، بنابراین ETag را قادر میسازد در زمینه حافظه نهان مرورگر معمولی کار کند.
استفاده از gzip
همچنین میتوانید با فعال کردن فشردهسازی gzip، پهنای باند موردنیاز برای هر پاسخ میانای برنامهسازی کاربردی را کاهش دهید. اگرچه برنامه شما برای از حالت فشرده خارج کردن پاسخهای میانای برنامهسازی کاربردی به زمان واحد پردازش مرکزی بیشتری نیاز دارد، اما مزیت مصرف منابع شبکه کمتر معمولاً بر این هزینه میچربد.
برای دریافت پاسخ کدگذاریشده با gzip باید دو کار انجام دهید:
- سرصفحه درخواست اچتیتیپیاس
Accept-Encodingرا رویgzipتنظیم کنید. - نماینده کاربرتان را اصلاح کنید تا حاوی رشته
gzipباشد.
سرصفحههای HTTP نمونه زیر این الزامات را برای فعال کردن فشردهسازی gzip نشان میدهند:
Accept-Encoding: gzip User-Agent: my program (gzip)