دسترسی به حافظه نهان در Node.js

درحال مشاهده اسناد Apigee Edge هستید.
به اسناد Apigee X بروید.
اطلاعات

می‌توانید از واحد apigee-access برای دسترسی به حافظه نهان توزیع‌شده Edge از در برنامه Node.js استفاده کنید. این واحد شامل روش‌هایی برای دریافت حافظه نهان و قرار دادن، دریافت، و برداشتن داده‌ها است.

بااستفاده از حافظه نهان توزیع‌شده Apigee Edge می‌توانید رشته‌ها یا داده‌های دیگر را ذخیره کنید. مانند اکثر حافظه‌های نهان، این حافظه نهان براساس کمترین استفاده اخیر با حداکثر اندازه است. در Apigee Edge، حافظه نهان بین همه گره‌هایی که برنامه Node.js شما در آن‌ها اجرا می‌شود توزیع می‌شود. می‌توانید حافظه نهان را ازطریق میانای برنامه‌سازی کاربردی Apigee Edge مدیریت کنید. بااستفاده از API، می‌توانید منابع حافظه نهان را به‌صورت دستی ایجاد کنید، یا می‌توانید از منبع پیش‌فرض استفاده کنید. برای آشنایی با ذخیره کردن در حافظه نهان در Apigee Edge، به ابزارهای ماندگاری در Edge مراجعه کنید. برای کسب اطلاعات بیشتر درباره حافظه نهان توزیع‌شده، به مثال: ذخیره کردن در حافظه نهان با هدف عمومی مراجعه کنید.

برای آشنایی با واحد apigee-access و ویژگی‌های دیگر آن، استفاده از واحد apigee-access را ببینید.

روش‌ها


(1) getCache

var cache = apigee.getCache(cacheName);

حافظه نهان نام‌گذاری‌شده‌ای را جستجو کنید و درصورت نیاز آن را ایجاد کنید. حافظه نهان حاصل از مجموعه ازپیش‌تعریف‌شده‌ای از پارامترهای پیکربندی مناسب برای اکثر موقعیت‌ها استفاده می‌کند.

پارامترها:

cacheName - رشته‌ای، نام حافظه نهان. (نه نام منبع حافظه نهان).

برگرداندن:

شیء حافظه نهان.

مثال:

var apigee = require('apigee-access');
var cache = apigee.getCache('cache');

(2) getCache

var customCache = apigee.getCache(cacheName, options );

به منبع حافظه نهان سفارشی که در یک شیء پیکربندی مشخص شده است دسترسی پیدا کنید. برای کسب اطلاعات درباره نحوه ایجاد منبع حافظه نهان، به ایجاد و ویرایش حافظه نهان محیط مراجعه کنید.

پارامترها:

cacheName - رشته‌ای، نام حافظه نهان سفارشی. (نه نام منبع حافظه نهان)

گزینه‌ها - یک شی پیکربندی. شیء می‌تواند خالی باشد، یا می‌تواند حاوی پارامترهای اختیاری زیر باشد:

  • resource: نام «منبع حافظه نهان» Apigee که داده‌های حافظه نهان در آن ذخیره می‌شود. از منابع حافظه نهان برای تنظیم دقیق تخصیص حافظه و دیگر پارامترهای حافظه نهان استفاده می‌شود. اگر مشخص نشده باشد، از منبع پیش‌فرض استفاده خواهد شد. اگر منبع حافظه نهان وجود نداشته باشد، روش خطا می‌دهد.

  • scope: مشخص می‌کند که آیا ورودی‌های حافظه نهان پیشوندی هستند یا نه برای جلوگیری از تصادم. مقادیر معتبر عبارت‌اند از global، application، و exclusive.

    • global: همه ورودی‌های حافظه نهان ممکن است توسط همه برنامه‌های Node.js در «محیط» Apigee یکسان دیده شود.

    • application: همه ورودی‌های حافظه نهان ممکن است توسط همه حافظه‌های نهان Node.js که بخشی از برنامه Apigee Edge یکسان هستند دیده شوند.

    • exclusive: (پیش‌فرض) ورودی‌های حافظه نهان فقط توسط حافظه‌های نهان Node.js در برنامه‌ای با نام یکسان دیده می‌شوند. این گزینه پیش‌فرض است.

  • prefix: اگر نام کلید حافظه نهان پیشوندی داشته باشد، همان‌طور که در پر کردن خط‌مشی حافظه نهان و کار با کلیدهای حافظه نهان توضیح داده شده است، از این پارامتر برای مشخص کردن آن استفاده کنید. ‫Edge به‌طور خودکار پسوند دوخط زیرین به نام پیشوند اضافه می‌کند. بنابراین اگر کلید حافظه نهانی با پیشوند «UserToken» ایجاد شده باشد، پیشوند برای مشخص کردن در اینجا «UserToken__» است.

  • defaultTtl: زمان پیش‌فرض ماندگاری ورودی حافظه نهان را به ثانیه مشخص می‌کند. اگر مشخص نشده باشد، از TTL پیش‌فرض در منبع حافظه نهان استفاده خواهد شد.

  • timeout: مدت زمان انتظار برای واکشی نتیجه از حافظه نهان توزیع‌شده، به ثانیه. پیش‌فرض ۳۰ ثانیه. برنامه‌های حساس به تأخیر ممکن است بخواهند این مقدار را کاهش دهند تا درصورت بار زیاد زیرساخت حافظه نهان، از زمان‌های پاسخ کند جلوگیری کنند.

برگرداندن:

شیء حافظه نهان سفارشی.

مثال:

var apigee = require('apigee-access');
var customCache = apigee.getCache('doesNotMatter',
  { resource: 'MyCustomResource', scope: 'global', prefix: 'UserToken'} );
customCache.put("myCacheKey", "xyz");

این کار با خط‌مشی LookupCache که به این صورت پیکربندی شده است انجام می‌شود:

<LookupCache name="Lookup-Cache-1">
  <CacheKey>
    <Prefix>UserToken</prefix>    
    <KeyFragment>myCacheKey</KeyFragment>
  </CacheKey>
  <CacheResource>MyCustomResource</CacheResource>
  <Scope>Global</Scope>
  <AssignTo>contextVariable</AssignTo>
</LookupCache>

قرار دادن

cache.put('key', data, ttl, function(error));

داده‌ها را در حافظه نهان قرار دهید.

پارامترها:

  • key: (الزامی) رشته‌ای که به‌طور یکتا مورد را در حافظه نهان شناسایی می‌کند. کلیدهای حافظه نهان به اندازه ۲ کیلوبایت محدود می‌شوند.

  • data: (الزامی) رشته، میان‌گیر، یا شیئی که نشان‌دهنده داده‌های ذخیره‌شده در حافظه نهان است. هر نوع داده دیگری منجر به خطا خواهد شد. برای راحتی، اشیا بااستفاده از «JSON.stringify» به رشته تبدیل خواهند شد.

  • ttl: (اختیاری) حداکثر زمان ماندگاری داده‌ها در حافظه نهان، به ثانیه. اگر مشخص نشده باشد، از TTL پیش‌فرض استفاده خواهد شد.

  • callback: (اختیاری) اگر مشخص شده باشد، تابعی که وقتی داده‌ها به‌طور ایمن در حافظه نهان قرار گرفتند فراخوانده می‌شود. اگر خطای درج وجود داشته باشد، با یک شیء «خطا» به‌عنوان پارامتر اول فراخوانی می‌شود، و درغیراین‌صورت بدون پارامتر فراخوانی می‌شود.

مثال:

var apigee = require('apigee-access');
var cache = apigee.getCache();
// Insert a string into cache using the default TTL
cache.put('key1', 'Buenos dias, Mundo!');
// Insert a string into cache using a TTL of 120 seconds
cache.put('key2', 'Hello, World!', 120);
// Insert a string with the default TTL, and get notified when the insert is complete
cache.put('key3', 'Ciao, Mondo!', function(error) {
  // "error" will be falsy unless there was an error on insert
});
// Insert a string with a TTL of 600 seconds, and get notified when the insert is complete
cache.put('key4', 'Hallo Wereld!', 600, function(error) {
  // "error" will be falsy unless there was an error on insert
});

دریافت

cache.get('key', function(error, data));

بازیابی داده‌ها از حافظه نهان.

پارامترها:

  • key (الزامی): رشته‌ای که به‌طور یکتا مورد را در حافظه نهان شناسایی می‌کند.

    برای ورودی‌های حافظه نهان که از خط‌مشی Apigee Edge (مثل خط‌مشی «پر کردن حافظه نهان») در حافظه نهان قرار می‌گیرند، باید کلید حافظه نهان را با استنباط از روش خاصی که خط‌مشی برای ایجاد کلیدهای ورودی استفاده می‌کند بسازید. برای انجام این کار، باید بدانید خط‌مشی چگونه پیکربندی شده است. درحالی‌که کار با کلیدهای حافظه نهان نحوه ایجاد کلیدهای حافظه نهان توسط خط‌مشی‌ها را شرح می‌دهد، به‌یاد داشته باشید که نباید مقادیر رشته‌ای مربوط به محدوده را مشخص کنید؛ در تماس‌های Node.js، محدوده ازقبل بخشی از زمینه است.

  • callback (الزامی): تابعی که وقتی داده‌ها دردسترس قرار می‌گیرند فراخوانی می‌شود. اگر داده‌های حافظه نهان وجود داشته باشد، در پارامتر دوم برگردانده می‌شود.

    • error - شیء «خطا». اگر هنگام بازیابی از حافظه نهان خطایی رخ دهد، یک شیء «خطا» در اینجا تنظیم خواهد شد. درغیراین‌صورت این پارامتر روی «تعریف‌نشده» تنظیم خواهد شد.

    • data - داده‌های بازیابی‌شده، درصورت وجود. یکی از چهار مقدار زیر خواهد بود:

      • اگر رشته‌ای درج شده باشد، رشته خواهد بود.
      • اگر «میان‌گیری» درج شده باشد، «میان‌گیری» خواهد بود.
      • اگر شیئی درج شده باشد، رشته‌ای خواهد بود که حاوی نسخه JSON شیء است که توسط «JSON.stringify» تولید شده است.
      • اگر چیزی پیدا نشود، «تعریف‌نشده» خواهد بود.

مثال:

var apigee = require('apigee-access');
var cache = apigee.getCache();
cache.get('key', function(error, data) {
  // If there was an error, then "error" will be set.
  // If error is falsy, "data" is the item that was retrieved:
  //   - undefined, in the case of cache miss, or
  //   - a Buffer, or
  //   - a String
});

برداشتن

cache.remove('key', function(error));

موردی را که در حافظه نهان است نامعتبر کنید. پس‌از نامعتبر شدن کلید، درخواست‌های get() بعدی مقدار «تعریف‌نشده» را برمی‌گردانند، مگراینکه مقدار دیگری درج شود.

پارامترها:

  • key (الزامی): رشته‌ای که به‌طور منحصربه‌فرد مورد را در حافظه نهان برای نامعتبر کردن شناسایی می‌کند.

    برای ورودی‌های حافظه نهان که از خط‌مشی Apigee Edge (مثل خط‌مشی «پر کردن حافظه نهان») در حافظه نهان قرار می‌گیرند، باید کلید حافظه نهان را با استنباط از روش خاصی که خط‌مشی برای ایجاد کلیدهای ورودی استفاده می‌کند بسازید. برای انجام این کار، باید بدانید خط‌مشی چگونه پیکربندی شده است. درحالی‌که کار با کلیدهای حافظه نهان نحوه ایجاد کلیدهای حافظه نهان توسط خط‌مشی‌ها را شرح می‌دهد، به‌یاد داشته باشید که نباید مقادیر رشته‌ای مربوط به محدوده را مشخص کنید؛ در تماس‌های Node.js، محدوده ازقبل بخشی از زمینه است.

  • callback (الزامی): تابع برگشتی که درصورت وجود خطا، با شیء «خطا» به‌عنوان پارامتر اول فراخوانی می‌شود.

مثال:

var apigee = require('apigee-access');
var cache = apigee.getCache();
cache.remove('key', function(error) {
});