מדיניות ResponseCache

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

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

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

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

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

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

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

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

דוגמאות

מטמון ל-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>. לדוגמה, מפתח מטמון יקבל את הפורמט הבא אם ההיקף מוגדר ל-Exclusive: orgName__envName__apiProxyName__proxy|TargetName__ [ serializedCacheKey ].

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

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

ערכים קבילים

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

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

אם מגדירים רשומה של <CacheKey> עם <KeyFragment> apiAccessToken ועם <Global> scope, כל רשומה מאוחסנת כ-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> כשמגדירים את אורך החיים (TTL):

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

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

<UseResponseCacheHeaders>false</UseResponseCacheHeaders>

ברירת מחדל:

FALSE

נוכחות:

אופציונלי

סוג:

בוליאני

הערות שימוש

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

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

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

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

בדומה למדיניות PopulateCache, אפשר להגדיר את תאריך התפוגה של רשומה במטמון התגובות (אורך החיים שלה) באמצעות הרכיב <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

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

משתני תקלות

לא רלוונטי

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

לא רלוונטי

סכימה

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