پشتیبانی از سرایندهای پاسخ HTTP

درحال مشاهده اسناد Apigee Edge هستید.
به اسناد Apigee X بروید.
اطلاعات

این موضوع توضیح می‌دهد که وقتی از خط‌مشی ResponseCache استفاده می‌کنید، Edge چگونه سرایندهای حافظه نهان HTTP/1.1 را مدیریت می‌کند. درحال‌حاضر Apigee Edge از زیرمجموعه‌ای از سرصفحه‌های ذخیره کردن HTTP/1.1 و دستورات (ویژگی‌های پشتیبانی‌نشده در این موضوع فهرست شده‌اند) دریافتی از سرورهای مقصد (مبدأ) پشتیبانی می‌کند.

علاوه‌براین، Edge با برخی‌از سرایندها براساس دستورالعمل‌هایشان اقدام می‌کند. در برخی موارد، این سرایندهای حافظه نهان HTTP/1.1 هر رفتاری را که در خط‌مشی ResponseCache مشخص شده است ملغی می‌کنند. برای مثال، اگر سرصفحه Cache-Control از سرور زیرینه برگردانده شود، می‌توانید دستور s-maxage سرصفحه را داشته باشید که احتمالاً تنظیمات انقضای دیگر را در خط‌مشی ملغی می‌کند.

سرایند پشتیبانی
Cache-Control در پاسخ‌های برگشتی از سرورهای مبدأ زیرینه پشتیبانی می‌شود، اما در درخواست‌های کارخواه پشتیبانی نمی‌شود. ‫Edge از زیرمجموعه‌ای از دستورات پشتیبانی می‌کند.
منقضی می‌شود پشتیبانی می‌شود. می‌تواند ملغی شود.
برچسب‌های نهاد (ETags) رفتار ویژه برای If-Match و If-None-Match.
If-Modified-Since در درخواست‌های GET، سرایند به سرور مبدأ ارسال می‌شود حتی اگر ورودی حافظه نهان معتبری وجود داشته باشد.
Accept-Encoding ‫Edge بسته به سرایندهای ورودی، پاسخ‌های فشرده یا غیرفشرده ارسال می‌کند.

Cache-Control

‫Apigee Edge از سرصفحه Cache-Control فقط در پاسخ‌های برگشتی از سرورهای مبدأ زیرینه پشتیبانی می‌کند (مشخصات HTTP/1.1 اجازه می‌دهد سرصفحه‌های Cache-Control در هر دو درخواست‌های مشتری و پاسخ‌های سرور مبدأ وجود داشته باشد). سرورهای مبدأ می‌توانند شامل هر دو نقطه پایانی هدف باشند که در پراکسی Apigee Edge API تعریف شده‌اند و آن‌هایی که بااستفاده از فراخوانی‌های TargetServer API ایجاد شده‌اند.

محدودیت‌های پشتیبانی از Cache-Control

‫Apigee Edge از زیرمجموعه‌ای از قابلیت‌های سرصفحه پاسخ Cache-Control که در مشخصات HTTP/1.1 تعریف شده است پشتیبانی می‌کند. لطفاً به موارد زیر توجه کنید:

  • ‫Apigee Edge از سرایندهای Cache-Control که با درخواست‌های کارخواه ورودی می‌آیند پشتیبانی نمی‌کند.
  • ‫Apigee Edge فقط از مفهوم حافظه‌های نهان عمومی پشتیبانی می‌کند. (طبق مشخصات HTTP، Cache-Control می‌تواند عمومی (هم‌رسانی‌شده) یا خصوصی (تک‌کاربره) باشد.)
  • ‫Apigee Edge فقط از زیرمجموعه‌ای از دستورات پاسخ Cache-Control در مشخصات HTTP/1.1 پشتیبانی می‌کند. برای جزئیات، پشتیبانی از دستورات سرایند پاسخ Cache-Control را ببینید.

پشتیبانی از دستورات سرصفحه پاسخ Cache-Control

‫Apigee از زیرمجموعه‌ای از دستورات مشخصات HTTP/1.1 در پاسخ‌های سرورهای مبدأ پشتیبانی می‌کند. جدول زیر پشتیبانی Apigee Edge از دستورات سرصفحه پاسخ HTTP Cache-Control را شرح می‌دهد.

برای اطلاعات دقیق‌تر درباره دستورالعمل‌های فهرست‌شده در اینجا، Cache-Control را در مشخصات HTTP/1.1 ببینید.

دستور Cache-Control نحوه پردازش دستورالعمل توسط Apigee Edge
cache-extension پشتیبانی نمی‌شود.
max-age

اگر خط‌مشی ResponseCache شما عنصر <UseResponseCacheHeaders> را روی true تنظیم کند، پاسخ می‌تواند برای تعداد ثانیه‌های مشخص‌شده توسط این دستور ذخیره شود.

این دستور با دستور s-maxage ملغی می‌شود و سرایند Expires را ملغی می‌کند. عنصر <ExpirySettings> خط‌مشی نیز می‌تواند آن را ملغی کند. برای اطلاعات بیشتر، «تنظیم انقضای ورودی حافظه نهان» و <UseResponseCacheHeaders> را در خط‌مشی حافظه نهان پاسخ ببینید.

must-revalidate پشتیبانی نمی‌شود. همه ورودی‌های حافظه نهان به‌محض منقضی شدن توسط Apigee Edge حذف می‌شوند.
no-cache

‫Edge پاسخ مبدأ را در حافظه نهان ذخیره می‌کند، اما قبل‌از اینکه از آن برای برآورده کردن درخواست‌های بعدی مشتری استفاده شود، باید با سرور مبدأ دوباره اعتبارسنجی شود. این قانون به مبدأ اجازه می‌دهد پاسخ «۳۰۴ تغییر نکرده است» را برگرداند تا نشان دهد پاسخ باید از حافظه نهان برگردانده شود، و درنتیجه پردازش موردنیاز برای برگرداندن کل پاسخ را ذخیره می‌کند. اگر سرور مبدأ پاسخ کامل برگرداند، ورودی حافظه نهان موجود را جایگزین می‌کند. هر نام فیلدی که با این دستورالعمل مشخص شده باشد نادیده گرفته می‌شود.

no-store پشتیبانی نمی‌شود.
no-transform پشتیبانی نمی‌شود.
private پشتیبانی نمی‌شود. اگر این دستورالعمل دریافت شود، پاسخ مبدأ ذخیره نمی‌شود. نام‌های فیلد نادیده گرفته می‌شود.
proxy-revalidate پشتیبانی نمی‌شود. همه ورودی‌های حافظه نهان به‌محض منقضی شدن توسط Apigee Edge حذف می‌شوند.
public ‫Edge پاسخ مبدأ را ذخیره می‌کند، حتی اگر دستورات دیگر خلاف آن را نشان دهند. طبق مشخصات HTTP/1.1، تنها استثنا برای این قانون این است که پاسخ شامل سرایند «مجوز» باشد.
s-maxage

اگر خط‌مشی ResponseCache شما عنصر <UseResponseCacheHeaders> را روی true تنظیم کند، پاسخ می‌تواند برای تعداد ثانیه‌های مشخص‌شده توسط این دستور ذخیره شود.

این دستور max-age دستور و سرصفحه Expires را ملغی می‌کند. عنصر <ExpirySettings> خط‌مشی می‌تواند آن را ملغی کند. برای اطلاعات بیشتر، «تنظیم انقضای ورودی حافظه نهان» و <UseResponseCacheHeaders> را در خط‌مشی حافظه نهان پاسخ ببینید.

تاریخ انقضا

وقتی پرچم UseResponseCacheHeaders در خط‌مشی ResponseCache روی true تنظیم شده باشد، Edge می‌تواند از سرصفحه Expires برای تعیین زمان ماندگاری (TTL) ورودی حافظه نهان استفاده کند. این سرصفحه تاریخ/زمانی را مشخص می‌کند که پس‌از آن ورودی حافظه نهان پاسخ قدیمی درنظر گرفته می‌شود. این سرایند به سرورها اجازه می‌دهد براساس مُهر زمان، زمان مناسب برای برگرداندن مقدار ذخیره‌شده در حافظه نهان را اعلام کنند.

قالب‌های تاریخ قابل‌قبول برای سرصفحه Expires در مشخصات HTTP/1.1 توضیح داده شده است. برای مثال:

منقضی می‌شود: پنج‌شنبه، ۰۱ دسامبر ۱۹۹۴ ۱۶:۰۰:۰۰ به‌وقت گرینویچ

برای اطلاعات دقیق درباره قالب‌های تاریخ/زمان HTTP، به قالب‌های تاریخ/زمان در مشخصات HTTP/1.1 مراجعه کنید.

برای اطلاعات بیشتر درباره سرصفحه Expires، به تعاریف فیلد سرصفحه در مشخصات HTTP/1.1 مراجعه کنید.

ETag

برچسب نهاد (ETag) یک شناسه مرتبط با منبع درخواست‌شده است. بااستفاده از ETag، سرور می‌تواند تعیین کند که آیا منبع درخواستی و منبع ذخیره‌شده در حافظه نهان مرتبط با آن مطابقت دارند یا نه. برای مثال، اگر پاسخ با آنچه درحال‌حاضر در حافظه نهان است مطابقت نداشته باشد، سرور می‌تواند پاسخ را دوباره در حافظه نهان ذخیره کند. اگر ETagها مطابقت داشته باشند، می‌تواند منبع ذخیره‌شده در حافظه نهان را برگرداند.

وقتی نقطه پایانی هدف پاسخی را با ETag به Edge برمی‌گرداند، Edge این ETag را به‌همراه پاسخ در حافظه نهان ذخیره می‌کند.

می‌توانید درباره «برچسب‌های نهاد» در پارامترهای پروتکل در مشخصات HTTP/1.1 بیشتر بخوانید.

If-Match

با سرایند درخواست If-Match، نهاد ذخیره‌شده در حافظه نهان درصورتی جاری است که ETag در سرایند با ETag ذخیره‌شده در حافظه نهان مطابقت داشته باشد. هرگونه درخواست غیراز GET که سرصفحه If-Match را مشخص می‌کند به سرور مبدأ ارسال می‌شود تا اطمینان حاصل شود که هرگونه امکانات ذخیره در حافظه نهان مبدأ فرصت پردازش درخواست را دارد.

می‌توانید درباره If-Match در تعاریف فیلد سرایند در مشخصات HTTP/1.1 بیشتر بخوانید.

اگر Edge از کارخواهی که شامل سرایند If-Match است درخواست GET ورودی دریافت کند:

اگر سپس
سرصفحه If-Match یک یا چند ETag را مشخص می‌کند
  1. ‫Apigee Edge هر ورودی حافظه نهان منقضی‌نشده را برای منبع مشخص‌شده بازیابی می‌کند و هر ETag قوی را در آن ورودی‌های حافظه نهان با موارد مشخص‌شده در سرصفحه If-Match مقایسه می‌کند.
  2. اگر تطابقی پیدا شود، ورودی حافظه نهان برگردانده می‌شود.
  3. اگر چنین نباشد، درخواست به سرور مبدأ ارسال می‌شود.
سرصفحه If-Match «*» را مشخص می‌کند درخواست به سرور مبدأ ارسال می‌شود تا اطمینان حاصل شود که هرگونه امکانات ذخیره‌سازی مبدأ فرصت پردازش درخواست را داشته باشد
ورودی حافظه نهان با نشانی وب درخواست یکسان پیدا شد، اما فقط حاوی ETag ضعیف است ورودی باید قبل‌از اینکه به کاربر برگردانده شود، توسط سرور مبدأ دوباره اعتبارسنجی شود
‫ETag از سرور مبدأ می‌آید. ‫ETag بدون تغییر به کارخواه برگردانده می‌شود

If-None-Match

با سرایند If-None-Match، نهاد ذخیره‌شده در حافظه نهان درصورتی جاری است که ETag در سرایند با ETag ذخیره‌شده در حافظه نهان مطابقت نداشته باشد. درخواست‌های غیر از GET که حاوی این سرایند هستند به سرور مبدأ ارسال می‌شوند.

اگر Edge درخواست GET ورودی با این سرایند دریافت کند:

اگر سپس
سرصفحه If-None-Match یک یا چند ETag را مشخص می‌کند
  1. ‫Apigee Edge هر ورودی حافظه نهان منقضی‌نشده را برای نشانی وب مشخص‌شده بازیابی می‌کند و هر ETag قوی را در آن ورودی‌های حافظه نهان با موارد مشخص‌شده در سرصفحه If-None-Match مقایسه می‌کند.
  2. اگر تطابقی پیدا شود، Edge وضعیت «۳۰۴ تغییر نکرده است» را برمی‌گرداند. اگر مطابقت پیدا نشد، ‫Edge درخواست را به سرور مبدأ ارسال می‌کند.

سرصفحه If-None-Match «*» را مشخص می‌کند و ورودی حافظه نهان منقضی‌نشده‌ای برای نشانی وب درخواستی وجود دارد

‫Edge وضعیت «۳۰۴ تغییر نکرده است» را برمی‌گرداند
ورودی حافظه نهان با همان نشانی وب درخواست پیدا شد اما فقط شامل ETag ضعیف است پیش‌از اینکه Edge آن را به مشتری برگرداند، سرور مبدأ باید ورودی را دوباره اعتبارسنجی کند
‫Edge از سرور مبدأ ETag دریافت می‌کند ‫ETag بدون تغییر به کارخواه برگردانده می‌شود

If-Modified-Since

اگر Apigee Edge سرایند If-Modified-Since را در درخواست GET دریافت کند، حتی اگر ورودی حافظه نهان معتبری وجود داشته باشد، به سرور مبدأ ارسال می‌شود.

این کار تضمین می‌کند که هرگونه به‌روزرسانی منبعی که از Apigee Edge عبور نکرده است درنظر گرفته شود. اگر سرور مبدأ نهاد جدیدی برگرداند، Edge ورودی حافظه نهان موجود را با مقدار جدید جایگزین می‌کند. اگر سرور وضعیت «۳۰۴ تغییر نکرده است» را برگرداند، Edge مقدار پاسخ را برمی‌گرداند اگر سرایند Last-Modified پاسخ ذخیره‌شده در حافظه نهان نشان دهد که تغییر نکرده است.

Accept-Encoding

وقتی درخواست ورودی شامل سرایند Accept-Encoding با مقادیر gzip، deflate، یا compress باشد، سرور مبدأ با داده‌های فشرده پاسخ می‌دهد. وقتی درخواست‌های بعدی بدون سرایندهای Accept-Encoding ارسال می‌شوند، انتظار دارند پاسخ فشرده‌نشده دریافت کنند. سازوکار ذخیره کردن پاسخ در حافظه نهان Apigee می‌تواند پاسخ‌های فشرده و غیرفشرده را بسته به سرایندهای ورودی بدون بازگشت به سرور مبدأ ارسال کند.

می‌توانید مقادیر سرایند «پذیرفتن» را به کلیدهای حافظه نهان پیوست کنید تا کلیدها برای هر عنصر ذخیره‌شده در حافظه نهان بامعنی‌تر شوند. برای جزئیات بیشتر، «پیکربندی کلید حافظه نهان» را در خط‌مشی حافظه نهان پاسخ ببینید.