הדף הזה רלוונטי ל-Apigee ול-Apigee Hybrid.
לעיון במסמכי התיעוד של
Apigee Edge
המדיניות PopulateCache מגדירה איך ערכים שנשמרו במטמון ייכתבו בזמן הריצה.
המדיניות Populate Cache (אכלוס המטמון) מיועדת לכתיבת רשומות במטמון לטווח קצר לשימוש כללי. היא משמשת בשילוב עם המדיניות בנושא חיפוש במטמון (לקריאת רשומות במטמון) ועם המדיניות בנושא ביטול תוקף של מטמון (לביטול תוקף של רשומות).
המדיניות הזו היא מדיניות ניתנת להרחבה, והשימוש בה עשוי להשפיע על העלויות או על ניצול המשאבים, בהתאם לרישיון Apigee שלכם. מידע על סוגי המדיניות וההשלכות של השימוש בהם זמין במאמר סוגי מדיניות.
מידע על שמירת תשובות של משאבי 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 |
השם הפנימי של המדיניות. הערך של מאפיין אפשר להשתמש ברכיב |
לא רלוונטי | חובה |
continueOnError |
מגדירים את הערך הגדרה ל- |
FALSE | אופציונלי |
enabled |
מגדירים את המדיניות למצב מגדירים את הערך |
TRUE | אופציונלי |
async |
המאפיין הזה הוצא משימוש. |
FALSE | הוצא משימוש |
אלמנט <DisplayName>
משתמשים בו בנוסף למאפיין name כדי לתת למדיניות שם אחר בשפה טבעית, לסימון המדיניות בכלי לעריכת פרוקסי בממשק המשתמש לניהול.
<DisplayName>Policy Display Name</DisplayName>
| ברירת מחדל |
לא רלוונטי אם לא מציינים את הרכיב הזה, המערכת משתמשת בערך של המאפיין |
|---|---|
| נוכחות | אופציונלי |
| סוג | String |
אלמנט <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>
|
ברירת מחדל: |
לא רלוונטי |
|
נוכחות: |
אופציונלי |
|
סוג: |
String |
מידע נוסף על הגדרת מטמונים זמין במאמר שמירה במטמון לשימוש כללי.
אלמנט <CacheKey>/<KeyFragment>
מציין ערך שצריך לכלול במפתח המטמון. מציינים משתנה לביטול ההפניה
באמצעות המאפיין ref, או ערך קבוע.
<KeyFragment ref="variable_name"/> <KeyFragment>literal_string</KeyFragment>
|
ברירת מחדל: |
לא רלוונטי |
|
נוכחות: |
אפס או יותר |
|
סוג: |
לא רלוונטי |
בזמן הריצה, Apigee יוצר את מפתח המטמון על ידי הוספת הערך שמתקבל מהרכיב <Scope> או מהרכיב <Prefix>, לשרשור של הערכים שפוענחו של כל אחד מהרכיבים <KeyFragment>.
מידע נוסף זמין במאמר בנושא עבודה עם מפתחות מטמון.
מאפיינים
| מאפיין | סוג | ברירת מחדל | חובה | תיאור |
|---|---|---|---|---|
| ref | מחרוזת | לא |
המשתנה שממנו יתקבל הערך. אין להשתמש במאפיין הזה אם הרכיב הזה מכיל ערך מילולי. |
אלמנט <CacheKey>/<Prefix>
מציינת ערך קבוע לשימוש כקידומת של מפתח מטמון.
<Prefix>prefix_string</Prefix>
|
ברירת מחדל: |
לא רלוונטי |
|
נוכחות: |
אופציונלי |
|
סוג: |
String |
רכיב <Prefix> מבטל את ההגדרה של כל רכיב <Scope>.
בזמן הריצה, Apigee יוצר את מפתח המטמון על ידי הוספת הערך שמתקבל מהרכיב <Scope> או מהרכיב <Prefix>, לשרשור של הערכים שפוענחו של כל אחד מהרכיבים <KeyFragment>.
מידע נוסף זמין במאמר בנושא עבודה עם מפתחות מטמון.
אלמנט <ExpirySettings>
מציין מתי תוקף של רשומה במטמון אמור לפוג.
<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> הרכיב הזה מחליף את הרכיב |
<ExpiryDate> |
מציין את התאריך שבו רשומה במטמון אמורה לפוג. מציינים מחרוזת בפורמט
<ExpirySettings> <ExpiryDate ref="var-containing-date">expiry</ExpiryDate> </ExpirySettings> אם התאריך שצוין הוא תאריך בעבר, המדיניות תחול על אורך החיים המקסימלי (TTL) של הנתונים שנשמרו במטמון. התקופה המקסימלית היא 30 ימים. |
<TimeOfDay> |
מציינים את השעה ביום שבה רשומה במטמון אמורה לפוג.
מציינים מחרוזת בפורמט <ExpirySettings> <TimeOfDay ref="var-containing-time">expiry</TimeOfDay> </ExpirySettings> |
צריך לציין רק אחד מרכיבי הצאצא האפשריים. אם מציינים כמה רכיבים,
סדר העדיפות הוא:TimeoutInSeconds, ExpiryDate,
TimeOfDay.
בכל אחד מרכיבי הצאצא של <ExpirySettings>,
אם מציינים את מאפיין ref האופציונלי ברכיב הצאצא, המדיניות
תאחזר את ערך התפוגה ממשתנה ההקשר שצוין. אם המשתנה לא מוגדר,
המדיניות משתמשת בערך הטקסט המילולי של רכיב הצאצא.
אלמנט <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 __. אם מגדירים רשומה של |
Application |
שם ה-proxy ל-API משמש כקידומת. מפתח המטמון מתווסף בתחילת השם בפורמט orgName__envName__apiProxyName. |
Proxy |
ההגדרה ProxyEndpoint משמשת כקידומת. מפתח המטמון מתווסף בתחילת השם בפורמט orgName__envName__apiProxyName__proxyEndpointName . |
Target |
ההגדרה TargetEndpoint משמשת כקידומת. מפתח המטמון מתווסף בתחילת הטופס orgName__envName__apiProxyName__targetEndpointName . |
Exclusive |
ברירת מחדל. זהו הערך הספציפי ביותר, ולכן הסיכון להתנגשויות במרחב השמות במטמון נתון הוא מינימלי. התחילית יכולה להיות אחת משתי צורות:
מפתח המטמון מתווסף בתחילת המחרוזת בפורמט orgName__envName__apiProxyName__proxyNameITargetName לדוגמה, המחרוזת המלאה יכולה להיראות כך: apifactory__test__weatherapi__default__apiAccessToken |
אלמנט <Source>
מציין את המשתנה שהערך שלו צריך להיכתב למטמון.
<Source>source_variable</Source>
|
ברירת מחדל: |
לא רלוונטי |
|
נוכחות: |
חובה |
|
סוג: |
String |
הערות שימוש
משתמשים במדיניות הזו לשמירת נתונים במטמון למטרות כלליות. בזמן הריצה, מדיניות <PopulateCache> כותבת נתונים מהמשתנה שציינתם ברכיב <Source> למטמון שציינתם ברכיב <CacheResource>. אפשר להשתמש ברכיבים <CacheKey>, <Scope> ו-<Prefix> כדי לציין מפתח שאפשר להשתמש בו במדיניות <LookupCache> כדי לאחזר את הערך. משתמשים ברכיב <ExpirySettings> כדי להגדיר מתי הערך שנשמר במטמון יפוג.
שמירת נתונים במטמון לשימוש כללי באמצעות המדיניות PopulateCache, LookupCache ו-InvalidateCache מתבצעת באמצעות מטמון שאתם מגדירים או מטמון משותף שכלול כברירת מחדל. ברוב המקרים, המטמון המשותף הבסיסי אמור לענות על הצרכים שלכם. כדי להשתמש במטמון הזה, פשוט משמיטים את הרכיב <CacheResource>.
מגבלות מטמון: חלות מגבלות שונות על המטמון, כמו גודל השם והערך, מספר המטמונים הכולל, מספר הפריטים במטמון ותאריך התפוגה.
מידע נוסף על מאגר הנתונים הבסיסי זמין במאמר פרטים פנימיים על המטמון.
מידע על הצפנת מטמון
Apigee ו-Apigee Hybrid (גרסה 1.4 ואילך): נתוני מטמון ו-KVM תמיד מוצפנים.
קודי שגיאה
This section describes the fault codes and error messages that are returned and fault variables that are set by Apigee when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. To learn more, see What you need to know about policy errors and Handling faults.
Runtime errors
These errors can occur when the policy executes.
| Fault code | HTTP Status | Occurs when |
|---|---|---|
policies.populatecache.EntryCannotBeCached |
500 |
An entry cannot be cached. The message object being cached is not an instance of a class that is Serializable. |
Deployment errors
These errors can occur when you deploy a proxy containing this policy.
| Error name | Cause | Fix |
|---|---|---|
InvalidCacheResourceReference |
This error occurs if the <CacheResource> element in the PopulateCache policy is set to
a name that does not exist in the environment where the API proxy is being deployed. |
build |
CacheNotFound |
The cache specified in the <CacheResource> element does not
exist. |
build |
Fault variables
These variables are set when this policy triggers an error. For more information, see What you need to know about policy errors.
| Variables | Where | Example |
|---|---|---|
fault.name="fault_name" |
fault_name is the name of the fault, as listed in the Runtime errors table above. The fault name is the last part of the fault code. | fault.name = "EntryCannotBeCached" |
populatecache.policy_name.failed |
policy_name is the user-specified name of the policy that threw the fault. | populatecache.POP-CACHE-1.failed = true |
Example error response
{ "fault": { "faultstring": "[entry] can not be cached. Only serializable entries are cached.", "detail": { "errorcode": "steps.populatecache.EntryCannotBeCached" } } }
Example fault rule
<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>