درحال مشاهده اسناد 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 شما عنصر این دستور با دستور |
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 در خطمشی 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 را مشخص میکند |
|
سرصفحه If-Match «*» را مشخص میکند |
درخواست به سرور مبدأ ارسال میشود تا اطمینان حاصل شود که هرگونه امکانات ذخیرهسازی مبدأ فرصت پردازش درخواست را داشته باشد |
| ورودی حافظه نهان با نشانی وب درخواست یکسان پیدا شد، اما فقط حاوی ETag ضعیف است | ورودی باید قبلاز اینکه به کاربر برگردانده شود، توسط سرور مبدأ دوباره اعتبارسنجی شود |
| ETag از سرور مبدأ میآید. | ETag بدون تغییر به کارخواه برگردانده میشود |
If-None-Match
با سرایند If-None-Match، نهاد ذخیرهشده در حافظه نهان درصورتی جاری است که ETag در سرایند با ETag ذخیرهشده در حافظه نهان مطابقت نداشته باشد. درخواستهای غیر از GET که حاوی این سرایند هستند
به سرور مبدأ ارسال میشوند.
اگر Edge درخواست GET ورودی با این سرایند دریافت کند:
| اگر | سپس |
|---|---|
سرصفحه If-None-Match یک یا چند ETag را مشخص میکند |
|
|
سرصفحه |
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 میتواند
پاسخهای فشرده و غیرفشرده را بسته به سرایندهای ورودی بدون بازگشت به
سرور مبدأ ارسال کند.
میتوانید مقادیر سرایند «پذیرفتن» را به کلیدهای حافظه نهان پیوست کنید تا کلیدها برای هر عنصر ذخیرهشده در حافظه نهان بامعنیتر شوند. برای جزئیات بیشتر، «پیکربندی کلید حافظه نهان» را در خطمشی حافظه نهان پاسخ ببینید.