המדיניות של PopulateCache

כרגע מוצג התיעוד של Apigee Edge.
כניסה למסמכי התיעוד של Apigee X.
מידע

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

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

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

הפניה לרכיב

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

<PopulateCache async="false" continueOnError="false" enabled="true" name="Populate-Cache-1">
    <DisplayName>Populate Cache 1</DisplayName>
    <Properties/>
    <CacheKey>
        <Prefix/>
        <KeyFragment ref=""/>
    </CacheKey>
    <!-- Omit this element if you're using the included shared cache. -->
    <CacheResource/>
    <Scope>Exclusive</Scope>
    <ExpirySettings>
        <TimeoutInSeconds>300</TimeoutInSeconds>
    </ExpirySettings>
    <Source>flowVar</Source>
</PopulateCache>

מאפייני <PopulateCache>

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

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

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

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

לא רלוונטי נדרש
continueOnError

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

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

false אופציונלי
enabled

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

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

true אופציונלי
async

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

false הוצא משימוש

רכיב <DisplayName>

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

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

לא רלוונטי

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

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

רכיב <CacheKey>

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

מפתחות מטמון מוגבלים לגודל של 2KB.

<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>. למידע נוסף, אפשר לעיין במאמר עבודה עם מפתחות מטמון.

הרכיב<CacheResource>

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

יש להשמיט את הרכיב הזה לחלוטין אם המדיניות הזו (וכללי המדיניות הרלוונטיים של LookupCache ו-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>. למידע נוסף, אפשר לעיין במאמר עבודה עם מפתחות מטמון.

מאפיינים

מאפיין תיאור ברירת המחדל נדרש התיאור
ר' מחרוזת לא

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

רכיב <CacheKey>/<Prefix>

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

<Prefix>prefix_string</Prefix>

ברירת מחדל:

לא רלוונטי

נוכחות:

אופציונלי

סוג:

מחרוזת

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

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

אלמנט <ExpirySettings>

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

<ExpirySettings>
  <!-- use exactly one of the following child elements -->
  <TimeoutInSeconds ref="duration_variable">seconds_until_expiration</TimeoutInSeconds>
  <ExpiryDate ref="date_variable">expiration_date</ExpiryDate>
  <TimeOfDay ref="time_variable">expiration_time</TimeOfDay>
</ExpirySettings>

ברירת מחדל:

לא רלוונטי

נוכחות:

נדרש

סוג:

לא רלוונטי

רכיבי צאצא של <ExpirySettings>

יש להשתמש ברכיב צאצא אחד בלבד. בטבלה הבאה מתוארים רכיבי הצאצא של <ExpirySettings>:

רכיב צאצא התיאור
<TimeoutInSeconds>

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

<ExpirySettings>
  <TimeoutInSeconds ref="var-containing-duration">expiry</TimeoutInSeconds>
</ExpirySettings>

הרכיב הזה מחליף את רכיב TimeoutInSec שהוצא משימוש.

<ExpiryDate>

ההגדרה הזאת קובעת את התאריך שבו יפוג התוקף של רשומת המטמון. אפשר לציין מחרוזת בפורמט mm-dd-yyyy.

<ExpirySettings>
  <ExpiryDate ref="var-containing-date">expiry</ExpiryDate>
</ExpirySettings>

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

<TimeOfDay>

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

<ExpirySettings>
  <TimeOfDay ref="var-containing-time">expiry</TimeOfDay>
</ExpirySettings>

יש לציין רק אחד מרכיבי הצאצא האפשריים. אם תציינו כמה רכיבים, סדר הקדימות הוא:TimeoutInSeconds, ExpiryDate, TimeOfDay.

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

רכיב <היקף>

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

<Scope>scope_enumeration</Scope>

ברירת מחדל:

'בלעדי'

נוכחות:

אופציונלי

סוג:

מחרוזת

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

orgName__envName__apiProxyName__deployedRevisionNumber__proxy|TargetName__ [ serializedCacheKey ]

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

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

ערכים קבילים

Global

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

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

Application

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

מפתח המטמון מצורף מראש בצורה orgName__envName__apiProxyName.

Proxy

תצורת ProxyEndpoint משמשת כקידומת.

מפתח המטמון מצורף מראש בצורה orgName__envName__apiProxyName__deployedRevisionNumber__proxyEndpointName .

Target

תצורת TargetEndpoint משמשת כקידומת.

הוספנו מראש את מפתח המטמון כך: orgName__envName__apiProxyName__deployedRevisionNumber__targetEndpointName .

Exclusive

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

הקידומת היא אחת משתי צורות:

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

הוספנו מראש את מפתח המטמון מהטופס orgName__envName__apiProxyName__deployedRevisionNumber__proxyNameITargetName

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

apifactory__test__weatherapi__16__default__apiAccessToken
.

רכיב <Source>

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

<Source>source_variable</Source>

ברירת מחדל:

לא רלוונטי

נוכחות:

נדרש

סוג:

מחרוזת

הערות על שימוש

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

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

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

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

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

Edge for Public Cloud: המטמון מוצפן רק בארגונים שתומכים ב-PCI וב-HIPAA. ההצפנה לארגונים אלה מוגדרת במהלך ניהול ההקצאות של הארגון.

קודי שגיאה

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

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

השגיאות האלה יכולות להתרחש כשהמדיניות מופעלת.

קוד שגיאה סטטוס HTTP מופיע כאשר
policies.populatecache.EntryCannotBeCached 500 לא ניתן לשמור ערך במטמון. אובייקט ההודעה שנשמר במטמון הוא לא מופע של מחלקה שניתן להגדיר עבורה סדרה.

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

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

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

משתני שבר

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

משתנים מיקום דוגמה
fault.name="fault_name" fault_name הוא שם התקלה, כפי שמפורט בטבלה שגיאות זמן ריצה שלמעלה. שם הטעות הוא החלק האחרון בקוד השגיאה. fault.name = "EntryCannotBeCached"
populatecache.policy_name.failed policy_name הוא השם שצוין על ידי המשתמש של המדיניות שגרמה לשגיאה. populatecache.POP-CACHE-1.failed = true

דוגמה לשגיאה

{
  "fault": {
    "faultstring": "[entry] can not be cached. Only serializable entries are cached.",
    "detail": {
      "errorcode": "steps.populatecache.EntryCannotBeCached"
    }
  }
}

דוגמה לכלל שגיאה

<FaultRule name="Populate Cache Fault">
    <Step>
        <Name>AM-EntryCannotBeCached</Name>
        <Condition>(fault.name Matches "EntryCannotBeCached") </Condition>
    </Step>
    <Condition>(populatecache.POP-CACHE-1.failed = true) </Condition>
</FaultRule>