אתם צופים במסמכי התיעוד של 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 |
השם הפנימי של המדיניות. הערך של המאפיין אפשר להשתמש ברכיב |
לא רלוונטי | חובה |
continueOnError |
צריך להגדיר את הערך יש להגדיר ל- |
false | אופציונלי |
enabled |
צריך להגדיר את הערך צריך להגדיר את הערך |
true | אופציונלי |
async |
המאפיין הזה הוצא משימוש. |
false | הוצא משימוש |
<DisplayName> רכיב
צריך להשתמש בנוסף למאפיין name כדי להוסיף תווית למדיניות
עורך proxy של ממשק משתמש לניהול עם שם אחר בשפה טבעית.
<DisplayName>Policy Display Name</DisplayName>
| ברירת מחדל |
לא רלוונטי אם משמיטים את הרכיב הזה, הערך של המאפיין |
|---|---|
| נוכחות | אופציונלי |
| סוג | מחרוזת |
אלמנט <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> הרכיב הזה מחליף את הרכיב |
<ExpiryDate> |
מציין את התאריך שבו רשומה במטמון אמורה לפוג. מציינים מחרוזת בפורמט
<ExpirySettings> <ExpiryDate ref="var-containing-date">expiry</ExpiryDate> </ExpirySettings> אם התאריך שצוין הוא תאריך בעבר, המדיניות תחול על הזמן המקסימלי שבו הרשומה במטמון פעילה. התקופה המקסימלית היא 30 ימים. |
<TimeOfDay> |
מציינים את השעה ביום שבה רשומה במטמון אמורה לפוג.
מציינים מחרוזת בפורמט <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 __. אם מגדירים רשומה של |
Application |
שם ה-proxy ל-API משמש כקידומת. מפתח המטמון מתווסף בתחילת השם בפורמט orgName__envName__apiProxyName. |
Proxy |
ההגדרה ProxyEndpoint משמשת כקידומת. מפתח המטמון מתווסף בתחילת השם בפורמט orgName__envName__apiProxyName__deployedRevisionNumber__proxyEndpointName . |
Target |
ההגדרה TargetEndpoint משמשת כקידומת. מפתח המטמון מתווסף בתחילת השם בפורמט orgName__envName__apiProxyName__deployedRevisionNumber__targetEndpointName . |
Exclusive |
ברירת מחדל. זהו הערך הספציפי ביותר, ולכן הסיכון להתנגשויות במרחב השמות במטמון נתון הוא מינימלי. התחילית יכולה להיות אחת משתי צורות:
מפתח המטמון מופיע בתחילת השורה בפורמט 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. |
build |
CacheNotFound |
המטמון שצוין ברכיב <CacheResource> לא
קיימים. |
build |
משתני כשל
המשתנים האלה מוגדרים כשהמדיניות הזו גורמת לשגיאה. מידע נוסף זמין במאמר מה צריך לדעת? על שגיאות שקשורות למדיניות.
| משתנים | איפה | דוגמה |
|---|---|---|
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>