המדיניות PopulateCache

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

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

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

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

הפניה לרכיב

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

<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 הוצא משימוש

&lt;DisplayName&gt; רכיב

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

מאפיינים

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

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

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

אלמנט <Scope>

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

<Scope>scope_enumeration</Scope>

ברירת מחדל:

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

נוכחות:

אופציונלי

סוג:

מחרוזת

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

orgName__envName__apiProxyName__deployedRevisionNumber__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__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>.

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

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

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

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>