מדיניות ResponseCache

מדיניות ניתנת להרחבה

הדף הזה רלוונטי ל-Apigee ול-Apigee Hybrid.

לעיון במסמכי התיעוד של Apigee Edge

המדיניות ResponseCache שומרת במטמון נתונים ממשאב עורפי, וכך מצמצמת את מספר הבקשות למשאב. כשאפליקציות שולחות בקשות לאותו URI, אפשר להשתמש במדיניות הזו כדי להחזיר תשובות שמאוחסנות במטמון במקום להעביר את הבקשות האלה לשרת העורפי. המדיניות ResponseCache יכולה לשפר את הביצועים של ה-API באמצעות הפחתה של זמן האחזור ותנועת הרשת.

המדיניות הזו היא מדיניות שניתנת להרחבה, והשימוש בה עשוי להשפיע על העלויות או על הניצול, בהתאם לרישיון שלכם ל-Apigee. למידע על סוגי מדיניות והשלכות השימוש, אפשר לעיין במאמר בנושא סוגי מדיניות.

סביר להניח שהשימוש ב-ResponseCache יהיה הכי יעיל כשנתוני ה-Backend שמשמשים את ה-API מתעדכנים רק מעת לעת. לדוגמה, נניח שיש לכם API שחושף נתונים של דוח מזג אוויר שמתעדכנים רק כל עשר דקות. באמצעות ResponseCache להחזרת תגובות שנשמרו במטמון בין רענונים, אפשר להקטין את מספר הבקשות שמגיעות לקצה העורפי. הפעולה הזו גם מצמצמת את מספר הקפיצות ברשת.

לשמירת נתונים במטמון לטווח קצר לשימוש כללי, כדאי להשתמש במדיניות PopulateCache. המדיניות הזו משמשת בשילוב עם מדיניות LookupCache (לקריאת רשומות במטמון) ועם מדיניות InvalidateCache (לביטול רשומות).

כדאי לצפות בסרטון הבא כדי לקבל מבוא למדיניות Response Cache.

דוגמאות

מטמון ל-10 דקות

בדוגמה הזו אפשר לראות איך לשמור תשובות במטמון למשך 10 דקות.

נניח שיש לכם API בכתובת ה-URL הבאה:

http://{org_name}-test.apigee.net/weather/forecastrss?w=23424778

אתם משתמשים בפרמטר השאילתה w כמפתח מטמון. ‫Apigee בודק את הערך של פרמטר השאילתה w בכל פעם שמתקבלת בקשה. אם יש תגובה תקינה (כלומר, לא פג תוקפה) במטמון, הודעת התגובה שנשמרה במטמון מוחזרת ללקוח ששלח את הבקשה.

נניח שהגדרתם מדיניות ResponseCache באופן הבא.

<ResponseCache name="ResponseCache">
    <CacheKey>
        <KeyFragment ref="request.queryparam.w" />
    </CacheKey>
    <ExpirySettings>
        <TimeoutInSeconds>600</TimeoutInSeconds>
    </ExpirySettings>
</ResponseCache>

בפעם הראשונה ש-proxy ל-API מקבל הודעת בקשה לכתובת ה-URL הבאה, התשובה נשמרת במטמון. בבקשה השנייה תוך 10 דקות, מתבצעת בדיקה במטמון – התשובה שנשמרה במטמון מוחזרת לאפליקציה בלי שהבקשה מועברת לשירות הקצה העורפי.

http://{org_name}-test.apigee.net/weather/forecastrss?w=23424778

דילוג על חיפוש במטמון

בדוגמה הבאה אפשר לראות איך לדלג על חיפוש במטמון ולרענן את המטמון. אפשר גם לצפות בסרטון הזה על השימוש ב-SkipCacheLookup.

התנאי האופציונלי SkipCacheLookup (אם הוא מוגדר) מוערך בנתיב הבקשה. אם התנאי מקבל את הערך true, המערכת מדלגת על החיפוש במטמון ומבצעת רענון של המטמון.

שימוש נפוץ ברענון מטמון מותנה הוא תנאי שמגדיר כותרת HTTP ספציפית שגורמת להערכת התנאי כ-true. אפשר להגדיר אפליקציית לקוח מבוססת סקריפט כך שתשלח בקשה עם כותרת HTTP מתאימה באופן תקופתי, וכך תגרום לרענון של מטמון התגובות.

לדוגמה, נניח שמתבצעת קריאה ל-API בכתובת ה-URL הבאה:

'http://{org_name}-test.apigee.net/weather/forecastrss?w=23424778' -H "bypass-cache:true"

עכשיו נניח שמדיניות ResponseCache הבאה מוגדרת בשרת ה-proxy הזה. שימו לב שהתנאי bypass-cache מוגדר כ-true.

<ResponseCache name="ResponseCache">
    <CacheKey>
        <KeyFragment ref="request.queryparam.w" />
    </CacheKey>
    <!-- Explicitly refresh the cached response -->
    <SkipCacheLookup>request.header.bypass-cache = "true"</SkipCacheLookup>
    <ExpirySettings>
        <TimeoutInSeconds>600</TimeoutInSeconds>
    </ExpirySettings>
</ResponseCache>

מידע נוסף על תנאים זמין במאמר משתני זרימה ותנאים.

הפניה לרכיב

הפניה לרכיב מתארת את הרכיבים והמאפיינים של המדיניות.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ResponseCache async="false" continueOnError="false" enabled="true" name="Response-Cache-1">
    <DisplayName>Response Cache 1</DisplayName>
    <Properties/>
    <CacheKey>
        <Prefix/>
        <KeyFragment ref="request.uri" />
    </CacheKey>
    <Scope>Exclusive</Scope>
    <ExpirySettings>
        <ExpiryDate/>
        <TimeOfDay/>
        <TimeoutInSeconds ref="flow.variable.here">300</TimeoutInSeconds>
    </ExpirySettings>
    <CacheResource>cache_to_use</CacheResource>
    <CacheLookupTimeoutInSeconds/>
    <ExcludeErrorResponse/>
    <SkipCacheLookup/>
    <SkipCachePopulation/>
    <UseAcceptHeader/>
    <UseResponseCacheHeaders/>
</ResponseCache>

מאפיינים של <ResponseCache>

<ResponseCache async="false" continueOnError="false" enabled="true" name="Response-Cache-1">

בטבלה הבאה מתוארים מאפיינים שמשותפים לכל רכיבי ההורה של המדיניות:

מאפיין תיאור ברירת מחדל נוכחות
name

השם הפנימי של המדיניות. הערך של מאפיין name יכול להכיל אותיות, מספרים, רווחים, מקפים, קווים תחתונים ונקודות. הערך הזה לא יכול לחרוג מ-255 תווים.

אפשר להשתמש ברכיב <DisplayName> כדי לתת למדיניות תווית בשם אחר בשפה טבעית בכלי לעריכת פרוקסי בממשק הניהול.

לא רלוונטי חובה
continueOnError

מגדירים את הערך false כדי להחזיר שגיאה אם המדיניות נכשלת. זו התנהגות צפויה ברוב המדיניות.

הגדרה ל-true מאפשרת להמשיך את הביצוע של התהליך גם אחרי שמדיניות נכשלת. מידע נוסף:

FALSE אופציונלי
enabled

מגדירים את המדיניות למצב true כדי לאכוף אותה.

מגדירים את הערך false כדי להשבית את המדיניות. המדיניות לא תיאכף גם אם היא תישאר מצורפת לזרימה.

TRUE אופציונלי
async

המאפיין הזה הוצא משימוש.

FALSE הוצא משימוש

אלמנט <DisplayName>

משתמשים בו בנוסף למאפיין name כדי לתת למדיניות שם אחר בשפה טבעית, לסימון המדיניות בכלי לעריכת פרוקסי בממשק המשתמש לניהול.

<DisplayName>Policy Display Name</DisplayName>
ברירת מחדל

לא רלוונטי

אם לא מציינים את הרכיב הזה, המערכת משתמשת בערך של המאפיין name של המדיניות.

נוכחות אופציונלי
סוג String

אלמנט <CacheKey>

הגדרת מצביע ייחודי לחלק נתונים שמאוחסן במטמון.

גודל מפתחות המטמון מוגבל ל-2KB.

<CacheKey>
    <Prefix>string</Prefix>
    <KeyFragment ref="variable_name" />
    <KeyFragment>literal_string</KeyFragment>
</CacheKey>

ברירת מחדל:

לא רלוונטי

נוכחות:

חובה

סוג:

לא רלוונטי

<CacheKey> בונה את השם של כל נתון שמאוחסן במטמון. המפתח מוגדר לעיתים קרובות באמצעות ערך מכותרות של ישויות או מפרמטרים של שאילתות. במקרים כאלה, מאפיין ה-ref של האלמנט יציין משתנה שמכיל את ערך המפתח.

בזמן הריצה, הערכים של <KeyFragment> מקבלים בתחילתם את הערך של רכיב <Scope> או את הערך של <Prefix>. לדוגמה, הקוד הבא יוצר מפתח מטמון של UserToken__apiAccessToken__<value_of_client_id>:

<CacheKey>
    <Prefix>UserToken</Prefix>
    <KeyFragment>apiAccessToken</KeyFragment>
    <KeyFragment ref="request.queryparam.client_id" />
</CacheKey>

משתמשים ברכיב <CacheKey> בשילוב עם <Prefix> ועם <Scope>. מידע נוסף זמין במאמר עבודה עם מפתחות מטמון.

רכיב <CacheLookupTimeoutInSeconds>

מציינים את מספר השניות שאחריהן חיפוש במטמון שלא הצליח ייחשב כאי מציאה במטמון. אם זה קורה, התהליך ממשיך לאורך הנתיב של אי מציאה במטמון.

<CacheLookupTimeoutInSeconds>30</CacheLookupTimeoutInSeconds>

ברירת מחדל:

30

נוכחות:

אופציונלי

סוג:

מספר שלם

רכיב <CacheResource>

מציין את המטמון שבו יש לאחסן את ההודעות. אם לא מציינים את הרכיב הזה, נעשה שימוש במטמון המשותף הכלול. אם רוצים לאפשר ניהול של ניקוי הרשומות במטמון, צריך לציין CacheResource לפי שם. מידע נוסף זמין במאמר בנושא Caches API.

<CacheResource>cache_to_use</CacheResource>

ברירת מחדל:

לא רלוונטי

נוכחות:

אופציונלי

סוג:

String

אלמנט <CacheKey>/<KeyFragment>

מציינים ערך שייכלל במפתח המטמון, וכך יוצרים מרחב שמות להתאמת בקשות לתשובות שמאוחסנות במטמון.

<KeyFragment ref="variable_name"/>
<KeyFragment>literal_string</KeyFragment>

ברירת מחדל:

לא רלוונטי

נוכחות:

אופציונלי

סוג:

לא רלוונטי

זה יכול להיות מפתח (שם סטטי שאתם מספקים) או ערך (רשומה דינמית שמוגדרת על ידי הפניה למשתנה). כל המקטעים שצוינו (בתוספת הקידומת) משורשרים כדי ליצור את מפתח המטמון.

<KeyFragment>apiAccessToken</KeyFragment>
<KeyFragment ref="request.queryparam.client_id" />

משתמשים ברכיב <KeyFragment> בשילוב עם <Prefix> ועם <Scope>. מידע נוסף זמין במאמר עבודה עם מפתחות מטמון.

מאפיינים

מאפיין סוג ברירת מחדל חובה תיאור
ref מחרוזת לא

המשתנה שממנו יתקבל הערך. אין להשתמש במאפיין הזה אם הרכיב הזה מכיל ערך מילולי.

אלמנט <CacheKey>/<Prefix>

מציינת ערך לשימוש כקידומת של מפתח מטמון.

<Prefix>prefix_string</Prefix>

ברירת מחדל:

לא רלוונטי

נוכחות:

אופציונלי

סוג:

String

משתמשים בערך הזה במקום ב-<Scope> כשרוצים לציין ערך משלכם ולא ערך מתוך רשימת הערכים של <Scope>. אם מוגדר ערך, <Prefix> מוסיף אותו לפני ערך מפתח המטמון של רשומות שנכתבות במטמון. ערך של רכיב <Prefix> מבטל את הערך של רכיב <Scope>.

משתמשים ברכיב <Prefix> בשילוב עם <CacheKey> ועם <Scope>. מידע נוסף זמין במאמר עבודה עם מפתחות מטמון.

אלמנט <ExcludeErrorResponse>

המדיניות הזו יכולה לשמור במטמון תגובות HTTP עם קוד סטטוס כלשהו. כלומר, אפשר לשמור במטמון גם תגובות של הצלחה וגם תגובות של שגיאה, כולל קודי סטטוס 2xx ו-3xx.

מגדירים את הרכיב הזה לערך true (ברירת מחדל) כדי לא לכלול את תגובות השגיאה. מגדירים אותו לערך false אם לא רוצים לא לכלול תגובות של יעד מטמון עם קודי סטטוס של שגיאת HTTP.

לדיון על דפוסי מטמון של תגובות שבהם הרכיב הזה שימושי, אפשר לעיין במבוא לדפוסי אנטי.

<ExcludeErrorResponse>true</ExcludeErrorResponse>

ברירת מחדל:

TRUE

נוכחות:

אופציונלי

סוג:

בוליאני

אלמנט <ExpirySettings>

מציין מתי תוקף של רשומה במטמון יפוג. אם הפרמטר <TimeoutInSeconds> קיים, הוא מחליף את הפרמטרים <TimeOfDay> ו-<ExpiryDate>.

<ExpirySettings>
  <TimeOfDay ref="time_variable">expiration_time</TimeOfDay>
  <TimeoutInSeconds ref="duration_variable">seconds_until_expiration</TimeoutInSeconds>
  <ExpiryDate ref="date_variable">expiration_date</ExpiryDate>
</ExpirySettings>

ברירת מחדל:

לא רלוונטי

נוכחות:

חובה

סוג:

לא רלוונטי

<ExpirySettings>/<ExpiryDate> element

מציין את התאריך שבו רשומה במטמון אמורה לפוג. משתמשים בטופס mm-dd-yyyy. אם הרכיב הזה קיים, הרכיב <TimeoutInSeconds> שבאותה רמה מבטל את <ExpiryDate>.

<ExpirySettings>
    <ExpiryDate ref="{date_variable}">expiration_date</ExpiryDate>
</ExpirySettings>

ברירת מחדל:

לא רלוונטי

נוכחות:

אופציונלי

סוג:

String

מאפיינים

<ExpiryDate ref="" />
מאפיין תיאור ברירת מחדל נוכחות סוג
ref

המשתנה שממנו יתקבל הערך. אין להשתמש במאפיין הזה אם הרכיב הזה מכיל ערך מילולי.

לא רלוונטי אופציונלי String

אלמנט <ExpirySettings>/<TimeOfDay>

השעה ביום שבה רשומה במטמון אמורה לפקוע. משתמשים בטופס hh:mm:ss . אם הרכיב הזה קיים, הרכיב <TimeoutInSeconds> שבאותה רמה מבטל את <TimeOfDay>.

מזינים את השעה בפורמט HH:mm:ss, כאשר HH מייצג את השעה בשעון של 24 שעות. לדוגמה, 14:30:00 לשעה 14:30 בצהריים.

לגבי השעה ביום, המקום ואזור הזמן שמוגדרים כברירת מחדל משתנים בהתאם למקום שבו הקוד פועל (שלא ידוע כשמגדירים את המדיניות).

<ExpirySettings>
    <TimeOfDay ref="time_variable">expiration_time</TimeOfDay>
</ExpirySettings>

ברירת מחדל:

לא רלוונטי

נוכחות:

אופציונלי

סוג:

String

מאפיינים

מאפיין תיאור ברירת מחדל נוכחות סוג
ref משתנה עם ערך של זמן התפוגה. לא רלוונטי אופציונלי מחרוזת

אלמנט <ExpirySettings>/<TimeoutInSec>

מספר השניות שאחריהן תוקף של רשומה במטמון יפוג.

אלמנט <ExpirySettings>/<TimeoutInSeconds>

מספר השניות שאחריהן תוקף של רשומה במטמון יפוג. אם הרכיב הזה קיים, הוא מבטל את הרכיבים האחים שלו, <TimeOfDay> ו-<ExpiryDate>.

<ExpirySettings>
    <TimeoutInSeconds ref="duration_variable">seconds_until_expiration</TimeoutInSeconds>
</ExpirySettings>

ברירת מחדל:

לא רלוונטי

נוכחות:

אופציונלי

סוג:

String

מאפיינים

מאפיין תיאור ברירת מחדל נוכחות סוג
ref משתנה עם ערך הזמן הקצוב לתפוגה.
לא רלוונטי
אופציונלי String

אלמנט <Scope>

ספירה שמשמשת ליצירת תחילית למפתח מטמון כשלא מסופק רכיב <Prefix> ברכיב <CacheKey>.

<Scope>scope_enumeration</Scope>

ברירת מחדל:

‫"Exclusive"‏ (בלעדי)

נוכחות:

אופציונלי

סוג:

String

ההגדרה <Scope> קובעת מפתח מטמון שמוסף לפני הערך <Scope>. לדוגמה, מפתח מטמון יקבל את הפורמט הבא כשההגדרה scope מוגדרת כ-Exclusive: orgName__envName__apiProxyName__proxy|TargetName__ [ serializedCacheKey ].

אם רכיב <Prefix> מופיע ב-<CacheKey>, הוא מחליף את הערך של רכיב <Scope>. הערכים החוקיים כוללים את הערכים המפורטים בהמשך.

משתמשים ברכיב <Scope> בשילוב עם <CacheKey> ועם <Prefix>. מידע נוסף זמין במאמר עבודה עם מפתחות מטמון.

ערכים קבילים

ערך ההיקף תיאור
Global

מפתח המטמון משותף לכל שרתי ה-API הפרוקסי שנפרסו בסביבה. מפתח המטמון מתווסף בתחילת השורה בפורמט orgName __ envName __.

אם מגדירים רשומה <CacheKey> עם <KeyFragment> apiAccessToken ועם היקף <Global>, כל רשומה מאוחסנת כ-orgName__envName__apiAccessToken, ואחריה הערך הסדרתי של טוקן הגישה. עבור proxy ל-API שנפרס בסביבה בשם 'test' בארגון בשם 'apifactory', טוקני הגישה יאוחסנו תחת מפתח המטמון הבא: apifactory__test__apiAccessToken.

Application

שם ה-proxy ל-API משמש כקידומת.

מפתח המטמון מתווסף בתחילת השם בפורמט orgName__envName__apiProxyName.

Proxy

ההגדרה ProxyEndpoint משמשת כקידומת.

מפתח המטמון מתווסף בתחילת השם בפורמט orgName__envName__apiProxyName__proxyEndpointName .

Target

ההגדרה TargetEndpoint משמשת כקידומת.

מפתח המטמון מתווסף בתחילת הטופס orgName__envName__apiProxyName__targetEndpointName .

Exclusive

ברירת מחדל. זהו הערך הספציפי ביותר, ולכן הסיכון להתנגשויות במרחב השמות במטמון נתון הוא מינימלי.

התחילית יכולה להיות אחת משתי צורות:

  • אם המדיניות מצורפת לתהליך ProxyEndpoint, הקידומת היא מהצורה ApiProxyName_ProxyEndpointName.
  • אם המדיניות מצורפת ב-TargetEndpoint, הקידומת היא מהצורה ApiProxyName_TargetName.

מפתח המטמון מופיע בתחילת השורה בפורמט orgName__envName__apiProxyName__proxyNameITargetName

לדוגמה, המחרוזת המלאה יכולה להיראות כך:

apifactory__test__weatherapi__default__apiAccessToken
.

אלמנט <SkipCacheLookup>

הפונקציה מגדירה ביטוי שאם הערך שלו הוא True בזמן הריצה, מציין שצריך לדלג על חיפוש במטמון ולרענן את המטמון. כדאי גם לצפות בסרטון בנושא שימוש במדיניות ResponseCache ב-SkipCacheLookup.

<SkipCacheLookup>variable_condition_expression</SkipCacheLookup>

ברירת מחדל:

לא רלוונטי

נוכחות:

אופציונלי

סוג:

String

בדוגמה הבאה, אם המשתנה bypass-cache מוגדר כ-true בכותרת נכנסת, חיפוש במטמון מדלג על המטמון ומתבצע רענון של המטמון.

<SkipCacheLookup>request.header.bypass-cache = "true"</SkipCacheLookup>

אלמנט <SkipCachePopulation>

המאפיין מגדיר ביטוי שאם הערך שלו הוא true בזמן הריצה, מציין שצריך לדלג על כתיבה למטמון. אפשר גם לצפות בסרטון הזה על השימוש ב-SkipCachePopulation.

<SkipCachePopulation>variable_condition_expression</SkipCachePopulation>

ברירת מחדל:

לא רלוונטי

נוכחות:

אופציונלי

סוג:

String

לדוגמה, הפעולה הבאה תדלג על כתיבה למטמון אם קוד הסטטוס של התגובה היה 400 או יותר:

<SkipCachePopulation>response.status.code >= 400</SkipCachePopulation>

רכיב <UseAcceptHeader>

הערך true גורם להוספת ערכים מכותרות Accept של התגובה למפתח המטמון של רשומה במטמון התגובות.

‫Apigee משתמש בכותרות הבקשה Accept, Accept-Encoding, Accept-Language ו-Accept-Charset כדי לחשב את מפתח המטמון. הגישה הזו מונעת מלקוח לקבל סוג מדיה שהוא לא ביקש.

לדוגמה, נניח שמתקבלות שתי בקשות מאותה כתובת URL, כאשר הבקשה הראשונה מקבלת gzip והשנייה לא. הבקשה הראשונה תישמר במטמון, והרשומה שנשמרה במטמון תהיה (כנראה) תגובה דחוסה ב-gzip. הבקשה השנייה תקרא את הערך שנשמר במטמון, ואז עשויה להחזיר רשומה בפורמט gzip ללקוח שלא יכול לקרוא gzip.

מידע נוסף מופיע במאמר הגדרת מפתח מטמון.

<UseAcceptHeader>false</UseAcceptHeader>

ברירת מחדל:

FALSE

נוכחות:

אופציונלי

סוג:

בוליאני

רכיב <UseResponseCacheHeaders>

הערך true גורם לכך שכותרות תגובת ה-HTTP נלקחות בחשבון כשמגדירים את אורך החיים (TTL) של התגובה במטמון. אם הערך הוא true, ‏ Apigee לוקח בחשבון את הערכים של כותרות התגובה הבאות, ומשווה את הערכים לאלה שהוגדרו על ידי <ExpirySettings> כשמגדירים את אורך החיים:

  • Cache-Control s-maxage
  • Cache-Control max-age
  • Expires

פרטים נוספים זמינים במאמר בנושא הגדרת תפוגה של רשומות במטמון.

<UseResponseCacheHeaders>false</UseResponseCacheHeaders>

ברירת מחדל:

FALSE

נוכחות:

אופציונלי

סוג:

בוליאני

הערות שימוש

הגודל המקסימלי של כל אובייקט שנשמר במטמון הוא 256KB. (מידע מפורט על אופן העיבוד של מטמון ב-Apigee זמין במאמר בנושא Cache internals).

באמצעות הגדרה במדיניות ResponseCache, אפשר להגדיר ש-Apigee יכלול כותרות של תגובות HTTP בהגדרת תפוגה של רשומות במטמון ומפתחות מטמון. בקטע הזה מוסבר איך להשתמש במדיניות עם כותרות כדי לנהל את התפוגה של המטמון ומפתחות המטמון.

מידע נוסף על האופן שבו Apigee מטפל בכותרות של תגובות באמצעות מדיניות ResponseCache זמין במאמר בנושא תמיכה בכותרות של תגובות HTTP.

הגדרת תפוגה של רשומה במטמון

בדומה למדיניות PopulateCache, אפשר להגדיר את תאריך התפוגה של רשומה במטמון התגובות (אורך חיים (TTL)) באמצעות הרכיב <ExpirySettings>. במדיניות ResponseCache, אפשר גם להגדיר ש-Apigee יתייחס לכותרות של תגובות כשהן קיימות.

כדי להשתמש בכותרות של התגובה, מגדירים את ערך הרכיב <UseResponseCacheHeaders> ל-true. ההגדרה הזו גורמת ל-Apigee להתייחס לכותרות התגובה, להשוות אותן לערך שהוגדר על ידי <ExpirySettings>, ואז להשתמש בערך הנמוך מבין השניים. כשמתייחסים לכותרות התגובה, Apigee בוחר את הערך שזמין כפי שמתואר בהמשך:

תרשים שמראה מה קורה כשמגדירים את UseResponseCacheHeaders כ-true.

לדוגמה, נניח שתגובה נשמרת במטמון עם הערכים הבאים:

  • אין ערך Cache-Control s-maxage
  • ערך Cache-Control max-age של 300
  • תאריך Expires בעוד שלושה ימים
  • ערך של <ExpirySettings> TimeoutInSeconds‏ 600.

במקרה כזה, הערך Cache-Control max-age ישמש כערך ה-TTL כי הוא נמוך מהערך <ExpirySettings> וכי לא צוין ערך Cache-Control s-maxage (שקודם לערך max-age).

הגדרת מפתח מטמון

בדומה למדיניות כללית של מטמון, כמו מדיניות PopulateCache, במדיניות ResponseCache משתמשים ברכיבים <CacheKey> ו-<Scope> כדי להגדיר יצירה של מפתח מטמון עבור רשומות במטמון. בעזרת ResponseCache אפשר גם להוסיף משמעות למפתחות של מטמון על ידי צירוף כותרות Accept של תגובות לערכי המפתח.

מידע כללי על הגדרת מפתחות מטמון מופיע במאמר עבודה עם מפתחות מטמון. מידע על שימוש בכותרות Accept מופיע במאמר <UseAcceptHeader>.

מידע על הצפנת מטמון

Apigee ו-Apigee Hybrid (גרסה 1.4 ואילך): נתוני מטמון ו-KVM תמיד מוצפנים.

משתנים בתהליך

משתני ה-Flow המוגדרים מראש הבאים מאוכלסים כשמבצעים מדיניות ResponseCache. מידע נוסף על משתני Flow זמין במאמר Flow variables reference.

משתנים סוג הרשאה תיאור
responsecache.{policy_name}.cachename String קריאה בלבד החזרת המטמון שנעשה בו שימוש במדיניות
responsecache.{policy_name}.cachekey String קריאה בלבד החזרת המפתח שבו נעשה שימוש
responsecache.{policy_name}.cachehit בוליאני קריאה בלבד ‫True אם ביצוע המדיניות הצליח
responsecache.{policy_name}.invalidentry בוליאני קריאה בלבד הערך True אם רשומת המטמון לא תקפה

קודי שגיאה

בקטע הזה מתוארות הודעות השגיאה ומשתני הזרימה שמוגדרים כשמדיניות כזו מפעילה שגיאה. חשוב להכיר את המידע הזה אם מפתחים כללי תקלות לשרת proxy. מידע נוסף זמין במאמרים מה שצריך לדעת על שגיאות מדיניות וטיפול בתקלות.

קידומת של קוד שגיאה

לא רלוונטי

שגיאות זמן ריצה

המדיניות הזו לא יוצרת שגיאות בזמן ריצה.

שגיאות בהטמעה

השגיאות האלה יכולות להתרחש כשפורסים שרת proxy שמכיל את המדיניות הזו.

שם השגיאה מטרה תיקון
InvalidTimeout אם הרכיב <CacheLookupTimeoutInSeconds> של המדיניות ResponseCache מוגדר כמספר שלילי, פריסת ה-proxy ל-API תיכשל.
InvalidCacheResourceReference השגיאה הזו מתרחשת אם הרכיב <CacheResource> במדיניות ResponseCache מוגדר לשם שלא קיים בסביבה שבה מתבצעת הפריסה של proxy ל-API.
ResponseCacheStepAttachmentNotAllowedReq השגיאה הזו מתרחשת אם אותה מדיניות ResponseCache מצורפת למספר נתיבי בקשות בכל זרימה של שרת proxy ל-API.
ResponseCacheStepAttachmentNotAllowedResp השגיאה הזו מתרחשת אם אותה מדיניות ResponseCache מצורפת לכמה נתיבי תגובה בכל זרימה של proxy ל-API.
InvalidMessagePatternForErrorCode השגיאה הזו מתרחשת אם הרכיב <SkipCacheLookup> או הרכיב <SkipCachePopulation> במדיניות ResponseCache מכילים תנאי לא תקין.
CacheNotFound השגיאה הזו מתרחשת אם מטמון ספציפי שמוזכר בהודעת השגיאה לא נוצר ברכיב ספציפי של מעבד ההודעות.

משתני תקלות

לא רלוונטי

דוגמה לתגובת שגיאה

לא רלוונטי

סכימה

כל סוג מדיניות מוגדר על ידי סכימת XML ‏ (.xsd). סכימות מדיניות זמינות ב-GitHub.