מדיניות LookupCache

אתם צופים במסמכי התיעוד של Apigee Edge.
כדאי לעיין במסמכי התיעוד של Apigee X.
מידע

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

המדיניות הזו מיועדת לשימוש במטמון לטווח קצר למטרות כלליות. היא משמשת בשילוב עם המדיניות Populate Cache (לכתיבת רשומות) ועם המדיניות Invalidate Cache (לביטול רשומות).

מידע על שמירת תשובות של משאבי backend במטמון זמין במאמר בנושא מדיניות שמירת תשובות במטמון.

הפניה לרכיב

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

<LookupCache async="false" continueOnError="false" enabled="true" name="Lookup-Cache-1">
    <DisplayName>Lookup Cache 1</DisplayName>
    <Properties/>
    <CacheKey>
        <Prefix/>
        <KeyFragment ref=""/>
    </CacheKey>
    <!-- Omit this element if you're using the included shared cache. -->
    <CacheResource/>
    <CacheLookupTimeoutInSeconds/>
    <Scope>Exclusive</Scope>
    <AssignTo>flowVar</AssignTo>
</LookupCache>

מטמון משותף כלול כברירת מחדל. כדי להשתמש במטמון המשותף, צריך להשמיט את הרכיב <CacheResource> בהגדרת המדיניות הזו.

מידע נוסף על מאגר הנתונים הבסיסי זמין במאמר Cache internals. מידע נוסף על הגדרת מטמונים זמין במאמר יצירה ועריכה של מטמון סביבה.

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

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

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

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

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

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

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

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

false אופציונלי
enabled

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

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

true אופציונלי
async

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

false הוצא משימוש

&lt;DisplayName&gt; רכיב

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

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

לא רלוונטי

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

נוכחות אופציונלי
סוג מחרוזת

אלמנט <AssignTo>

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

<AssignTo>variable_to_receive_cached_value</AssignTo>

ברירת מחדל:

לא רלוונטי

נוכחות:

חובה

סוג:

מחרוזת

אלמנט <CacheKey>

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

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

ברירת מחדל:

לא רלוונטי

נוכחות:

חובה

סוג:

לא רלוונטי

<CacheKey> בונה את השם של כל נתון שמאוחסן במטמון.

בזמן הריצה, הערכים של <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>

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

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

<CacheResource>cache_to_use</CacheResource>

ברירת מחדל:

לא רלוונטי

נוכחות:

אופציונלי

סוג:

מחרוזת

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

אלמנט <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>

ברירת מחדל:

לא רלוונטי

נוכחות:

אופציונלי

סוג:

מחרוזת

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

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

אלמנט <Scope>

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

<Scope>scope_enumeration</Scope>

ברירת מחדל:

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

נוכחות:

אופציונלי

סוג:

מחרוזת

ההגדרה <Scope> קובעת מפתח מטמון שמוסף לפני הערך של <Scope>. לדוגמה, מפתח מטמון יקבל את הפורמט הבא אם ההיקף מוגדר ל-Exclusive: orgName__envName__applicationName__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__applicationName.

Proxy

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

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

Target

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

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

Exclusive

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

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

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

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

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

apifactory__test__weatherapi__16__default__apiAccessToken
.

הערות שימוש

משתמשים במדיניות הזו לשמירת נתונים במטמון למטרות כלליות. בזמן הריצה, מדיניות LookupCache מאחזרת ערך מהמטמון ומקצה את הערך למשתנה שצוין באמצעות רכיב AssignTo (אם לא מאוחזר ערך, המשתנה לא יוגדר). היא מחפשת את הערך על סמך מפתח מטמון שנוצר באמצעות הגדרה שמשלבת את הרכיבים CacheKey ו-Scope. במילים אחרות, כדי לאחזר ערך מסוים שנוסף למטמון על ידי מדיניות PopulateCache, צריך להגדיר את רכיבי המדיניות LookupCache שקשורים למפתח המטמון באותו אופן כמו במדיניות PopulateCache.

שמירת נתונים במטמון לשימוש כללי באמצעות המדיניות Populate Cache, המדיניות LookupCache והמדיניות InvalidateCache משתמשת במטמון שאתם מגדירים או במטמון משותף שכלול כברירת מחדל. ברוב המקרים, המטמון המשותף הבסיסי אמור לענות על הצרכים שלכם. כדי להשתמש במטמון שמוגדר כברירת מחדל, פשוט משמיטים את הרכיב <CacheResource>.

מידע נוסף על הגדרת מטמון זמין במאמר יצירה ועריכה של מטמון סביבה. מידע נוסף על מאגר הנתונים הבסיסי זמין במאמר Cache internals.

משתני זרימה

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

אחרי שמתאימים אישית את ההתנהגות של המטמון שמוגדר במדיניות LookupCache, המשתנים המוגדרים מראש הבאים של Flow זמינים:

משתנים סוג הרשאה תיאור
lookupcache.{policy-name}.cachename מחרוזת הרשאת קריאה בלבד מחזירה את שם המטמון שמשמש במדיניות.
lookupcache.{policy-name}.cachekey מחרוזת הרשאת קריאה בלבד הפונקציה מחזירה את המפתח שבו נעשה שימוש.
lookupcache.{policy-name}.cachehit בוליאני הרשאת קריאה בלבד הערך True אם המדיניות מצאה ערך למפתח המטמון שצוין.
lookupcache.{policy-name}.assignto מחרוזת הרשאת קריאה בלבד הפונקציה מחזירה את המשתנה שהמטמון הוקצה לו.

קודי שגיאה

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

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

לא רלוונטי

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

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

שגיאות בפריסה

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

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

משתני שבר

לא רלוונטי

דוגמה לשגיאה

לא רלוונטי