המדיניות של PopulateCache

מוצג המסמך של Apigee Edge.
עוברים אל מסמכי תיעוד של Apigee X.
מידע

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

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

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

הפניה לרכיב

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

<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>

&lt;PopulateCache&gt; מאפיינים

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

מאפיין תיאור ברירת מחדל נוכחות
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 של המדיניות הוא בשימוש.

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

&lt;CacheKey&gt; רכיב

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

הגודל של מפתחות המטמון מוגבל ל-2KB.

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

ברירת המחדל:

לא רלוונטי

נוכחות:

חובה

סוג:

לא רלוונטי

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

בזמן הריצה, הערכים של <KeyFragment> מתווספים לפני או עם התו ערך רכיב <Scope> או ערך <Prefix>. לדוגמה, התוצאות הבאות מניבות מפתח מטמון של UserToken__apiAccessToken__&lt;value_of_client_id&gt;:

<CacheKey>
    <Prefix>UserToken</Prefix>
    <KeyFragment>apiAccessToken</KeyFragment>
    <KeyFragment ref="request.queryparam.client_id" />
</CacheKey>

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

&lt;CacheResource&gt; רכיב

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

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

<CacheResource>cache_to_use</CacheResource>

ברירת המחדל:

לא רלוונטי

נוכחות:

אופציונלי

סוג:

מחרוזת

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

&lt;CacheKey&gt;/&lt;KeyFragment&gt; רכיב

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

<KeyFragment ref="variable_name"/>
<KeyFragment>literal_string</KeyFragment>

ברירת המחדל:

לא רלוונטי

נוכחות:

אופציונלי

סוג:

לא רלוונטי

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

<KeyFragment>apiAccessToken</KeyFragment>
<KeyFragment ref="request.queryparam.client_id" />

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

מאפיינים

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

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

&lt;CacheKey&gt;/&lt;Prefix&gt; רכיב

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

<Prefix>prefix_string</Prefix>

ברירת המחדל:

לא רלוונטי

נוכחות:

אופציונלי

סוג:

מחרוזת

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

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

&lt;ExpirySettings&gt; רכיב

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

&lt;Scope&gt; רכיב

ספירה שמשמשת לבניית קידומת למפתח מטמון כאשר <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 שנפרס בסביבה שנקראת 'בדיקה' בארגון שנקרא 'api עליו', אסימוני הגישה יאוחסנו מפתח המטמון הבא: apifactory__test__apiAccessToken.

Application

השם של שרת ה-proxy ל-API משמש כתחילית.

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

Proxy

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

מפתח המטמון מופיע בתחילת הטופס orgName__envName__apiProxyName__deployedRevisionNumber__proxyEndpointName .

Target

ההגדרה של נקודת הקצה של יעד משמשת כקידומת.

מפתח המטמון מופיע בתחילת הטופס orgName__envName__apiProxyName__deployedRevisionNumber__targetEndpointName .

Exclusive

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

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

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

מפתח המטמון מופיע בתחילת הטופס orgName__envName__apiProxyName__deployedRevisionNumber__proxyNameITargetName

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

apifactory__test__weatherapi__16__default__apiAccessToken
.

&lt;Source&gt; רכיב

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

<Source>source_variable</Source>

ברירת המחדל:

לא רלוונטי

נוכחות:

חובה

סוג:

מחרוזת

הערות שימוש

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

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

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

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

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

שוליים לענן ציבורי: המטמון מוצפן רק ב- 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>