المحتويات

المقدمة

المتطلبات الأساسية

المتطلبات

المكونات المستخدمة

معلومات أساسية

اعتبارات التخزين المؤقت لمطالبة البوابة

كيفية تحديد ما إذا كانت البوابة يتم تخزينها مؤقتا بشكل صحيح

حساب FreshTime

إزالة الإدخالات القديمة المخزنة مؤقتا

ماكس ستالي

أمر تحميل موجه الصوت

التاريخ والوقت

المقدمة

يصف هذا المستند ذاكرة التخزين المؤقت لبروتوكول نقل النص التشعبي (HTTP) لملفات الوسائط للغة الترميز القابلة للامتداد الصوتي (VXML) / بوابة صوت العميل (CVP).

المتطلبات الأساسية

المتطلبات

توصي Cisco بأن تكون لديك معرفة بالمواضيع التالية:

- بوابة VXML

- CVP

المكونات المستخدمة

لا يقتصر هذا المستند على إصدارات برامج ومكونات مادية معينة.

تم إنشاء المعلومات الواردة في هذا المستند من الأجهزة الموجودة في بيئة معملية خاصة. بدأت جميع الأجهزة المُستخدمة في هذا المستند بتكوين ممسوح (افتراضي). إذا كانت شبكتك مباشرة، فتأكد من فهمك للتأثير المحتمل لأي أمر.

معلومات أساسية

في ذاكرة التخزين المؤقت لعميل HTTP، هناك نوعان من ذاكرة التخزين المؤقت المضمنة في تخزين ملفات الوسائط:

1. ذاكرة التخزين المؤقت ل IVR Media Player و

2. ذاكرة التخزين المؤقت لعميل HTTP

يستبدل إعداد ذاكرة التخزين المؤقت للخادم إعدادات عميل HTTP، ويتم إرسال هذه المعلمات من الخادم إما عبر رؤوس رسائل HTTP أو من خلال البرامج النصية لتطبيق VXML.

اعتبارات التخزين المؤقت لمطالبة البوابة

الخطوة 1. عند تخزين مطالبات الصوت على خادم وسائط HTTP، يلزم توفر أساليب التخزين المؤقت لمطالبة البوابة المناسبة من أجل تحسين كل من أداء البوابة واستهلاك عرض النطاق الترددي للشبكة. ينخفض أداء العبارة بنسبة تتراوح بين 35 و 40٪ تقريبا إذا تم تعطيل التخزين المؤقت بالكامل.

لتكوين التخزين المؤقت على البوابة، قم بتعيين ما يلي على البوابة:

..ivr prompt memory 15000

..http client cache memory file 500

..http client cache memory pool 15000

ملاحظة: يمثل ملف ذاكرة التخزين المؤقت لعميل HTTP أكبر ملف مطالبة بالحجم (بالكيلوبايت) يمكن تخزينه مؤقتا. وبشكل عام، يجب تقسيم مطالبات العميل التي تزيد عن 500 ألف لفة في الدقيقة (لمدة دقيقة تقريبا) إلى قطع أصغر حجما يمكن إدارتها بشكل أكبر بهدف تسهيل عملية التحميل والتخزين المؤقت. على سبيل المثال، يمكن أن تكون موسيقى قائمة الانتظار حلقة متكررة من مطالبة 30 ثانية. لاحظ أيضا أنه نظرا لتدفق المطالبات، لا يتم تخزين المطالبة مؤقتا ما لم يتم تشغيل المطالبة بالكامل. لذلك، يوصى بأن تجعل المطالبات حجم قابل للإدارة.

الخطوة 2. مزامنة datetime بين البوابة وخادم وسائط HTTP.

ملاحظة: لا يجب أن تكون المزامنة دقيقة، ولكن على الأقل في غضون دقيقة أو دقيقتين. قد تتسبب الأوقات غير المتزامنة في عدم تحديث المطالبات أو تحديثها مع كل مكالمة، وكلاهما سلوك غير مرغوب فيه.

الخطوة 3. على خادم الوسائط، قم بتعيين انتهاء صلاحية المحتوى (على سبيل المثال، 15 دقيقة).

ملاحظة: في IIS، يتم ذلك ضمن علامة التبويب رأس HTTP. يتم تحديث مطالبة البوابة بعد هذه الفترة الزمنية. يجب أن تعكس الفترة المختارة عدد المرات التي يتم فيها إعادة تسجيل المطالبات ومدة الانتظار للحصول على حمل المطالبة الجديد بعد التعديل.

الخطوة 4. انتقل إلى برامج > أدوات إدارية > إدارة IIS.

الخطوة 5. انتقل إلى ملف .wav الذي تريد تعديله.

الخطوة 6. ثم، انقر بزر الماوس الأيمن > خصائص > رؤوس HTTP

الخطوة 7. تمكين انتهاء صلاحية المحتوى.

كيفية تحديد ما إذا كانت البوابة يتم تخزينها مؤقتا بشكل صحيح

لتحديد ما إذا كنت قد قمت بتكوين ذاكرة التخزين المؤقت للعبارة بشكل صحيح، اتبع ما يلي:

يقوم سجل IIS الموجود على خادم الوسائط بتسجيل كل مرة يطلب فيها العميل مطالبة. إذا تم إعداد التخزين المؤقت بشكل صحيح، فإن هذه الطلبات تظهر كل X دقيقة تقريبا (X هي كل ما تم تعريفه كفترة تحديث في الخطوة 3.) لأي موجه خاص. السجل متاح على الموقع التالي: C:\WINNT\system32\LogFiles\W3SVC1\ex*

أو ,

قم بتشغيل show http client cache على البوابة. يجب أن يساوي عمود الوقت الجديد فترة وقت التحديث المعينة على خادم وسائط HTTP.

على سبيل المثال، إذا تم تعيين فترة التحديث على 15 دقيقة، فيجب أن يشير ذلك إلى 900 ثانية. يظهر عمود Age عدد الثواني التي مرت منذ آخر تحديث للمطالبة. بشكل عام، هذا الرقم أقل من الوقت الطازج. ومع ذلك، إذا لم يتم الوصول إلى موجه الأمر مؤخرا من قبل أي مكالمة، فقد يكون هذا الرقم أكبر من الوقت الجديد. يتم تحديث المطالبات فقط عندما يتم تشغيلها بواسطة مكالمة وتنتهي صلاحية وقت المطالبة الجديد. إذا كان الوقت الجديد قيمة عالية جدا، فإن الطريقة الوحيدة لإزالة المطالبة من ذاكرة التخزين المؤقت (بخلاف الأوامر المخفية) هي إعادة تحميل البوابة.

من الأسهل بكثير إضافة الرأس كرأس HTTP حقيقي عبر IIS.

ويمكن القيام بذلك من خلال IIS 6 أو 7.

http://weblogs.asp.net/joelvarty/archive/2009/03/23/force-ie7-compatibility-mode-in-ie8-with-iis-settings.aspx

حساب FreshTime

هناك العديد من المتغيرات التي يمكن أن تؤثر على FreshTime للملف، مثل: رؤوس رسائل http من الخادم وقيمة تحديث ذاكرة التخزين المؤقت التي تم تكوينها من خلال CLI، وما إلى ذلك.

إذا كيف تعرف أي قيمة يستخدمها الملف في FreshTime؟ يتم تحديد وقت جديد للملف في هذه السابقة:

1. عند تنزيل ملف من خادم HTTP، إذا كان أحد رؤوس رسائل HTTP يحتوي على ما يلي:

Cache-Control: max-age = <value in seconds>

ثم يتم إستخدام <value in seconds> ك FreshTime لهذا الملف.

2. إذا لم يكن (1) موجودا، ولكن يتم تضمين هذين الرأسين في رسالة http:

Expires: <expiration date time>

Date: <Current date time>

ثم يتم إستخدام الفرق <تاريخ انتهاء الصلاحية> - <وقت التاريخ الحالي> ك FreshTime لهذا الملف.

3. توصي مواصفات HTTP/1.1، RFC 2616 (HTTP)، بوجود أي من رؤوس رسائل HTTP كما هو موضح في (1) أو (2).  إذا فشل الخادم في إرسال كل من (1) أو (2) في إستجابة HTTP، فيمكنك أخذ 10٪ من الفرق بين "التاريخ" و"آخر تعديل" من رؤوس الرسائل:

Last-Modified: <last-modified date time>

Date: <Current date time>

لذلك، يتم حساب FreshTime لهذا الملف على أنه:

FreshTime = 10% x ((Last-Modified) - (Date))

4. وأخيرا، يتم ذلك عند ظهور واجهة سطر الأوامر (CLI) لتحديث ذاكرة التخزين المؤقت. تسمح واجهة سطر الأوامر (CLI) للمستخدم بتعيين قيمة FreshTime إرشادية للملفات كقيمة مؤقتة في حالة عدم وجود أي من رؤوس الرسائل الواردة أعلاه (1)-(3).

c5400-02(config)#http client cache refresh ?

<1-864000>           Time value in seconds

قيمة التحديث الافتراضية هي 86400 ثانية (24 ساعة).

ملاحظة: لا يؤثر تحديث ذاكرة التخزين المؤقت لعميل HTTP الذي تم تكوينه على الملفات عند وجود أي من رؤوس الرسائل (1) - (3).

ملاحظة: لا تكون واجهة سطر الأوامر هذه، إن كانت نافذة المفعول، ذات أثر رجعي. هذا يعني، أن قيمة التحديث التي تم تكوينها حديثا تنطبق فقط على الملفات الواردة الجديدة. ليس لها تأثير على الإدخالات الموجودة بالفعل في ذاكرة التخزين المؤقت.

إزالة الإدخالات القديمة المخزنة مؤقتا

ملاحظة: لا يقوم الموجه بتحديث أي ملفات قديمة بشكل تلقائي.

يتم تحديث الملفات القديمة فقط على أساس الحاجة. لماذا سينفق الموجه دورات وحدة المعالجة المركزية (CPU) القيمة لتحديث الملفات في ذاكرة التخزين المؤقت دون معرفة ما إذا كانت هذه الملفات سيتم إستخدامها أو متى سيتم إستخدامها، بينما تكون وحدة المعالجة المركزية (CPU) مطلوبة للخدمات الأخرى العاجلة؟

هذا يعني أن الإدخال المخزن مؤقتا يمكن أن يبقى في ذاكرة التخزين المؤقت لفترة طويلة حتى تتم إزالته لتوفير مساحة إما لنسخة جديدة من نفس الملف، أو لملف آخر يحتاج فقط إلى مساحة الذاكرة في ذاكرة التخزين المؤقت. في بعض الأحيان، يمكن أن يظل الإدخال المخزن مؤقتا مؤقتا قابلا للاستخدام، إذا لم يتجاوز عمره قيمة MaxStale المحددة بواسطة التطبيق.

بإيجاز، يمكن حساب الإدخال المخزن مؤقتا، أو ما إذا كان لا يزال قابلا للاستخدام، باستخدام هذه المقارنات البسيطة:

-        file is fresh                                    if FreshTime > Age

-        file is stale but still usable         if (FreshTime + MaxStale) > Age

-        file is stale and not usable         if (FreshTime + MaxStale) <= Age

ماكس ستالي

تشير إلى أن العميل على إستعداد لقبول إستجابة تجاوزت وقت انتهاء صلاحيتها. إذا تم تعيين قيمة إلى Max-Stale، يكون العميل على إستعداد لقبول إستجابة تجاوزت وقت انتهاء صلاحيتها بما لا يزيد عن عدد الثواني المحدد. إذا لم يتم تعيين أي قيمة إلى max-stale، يكون العميل على إستعداد لقبول إستجابة وهمية من أي سن.

http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html

كما ذكر سابقا، تتم إزالة الإدخال المخزن مؤقتا بواسطة مالكه حسب الحاجة، عندما:

يصبح الإدخال المخزن مؤقتا تافها؛ و

عدد الإحالات هو صفر (0)، أي لا يستخدم أحد هذا الإدخال المخزن مؤقتا؛ و

تحتاج إلى مساحة في الذاكرة لتوفير مساحة لمدخلات أخرى

وهذا يعني أنه يجب على عميل HTTP و IVR Media Player إدارة الإدخالات المخزنة مؤقتا والتحكم فيها بهذه الطريقة في وضعي عدم الدفق والدفق، على التوالي. ماذا إذا أحتاج عميل HTTP إلى تنظيف بعض الإدخالات القديمة لاستعادة مساحة في تجمع ذاكرة التخزين المؤقت ولكنه ليس مالك تلك الملفات؟  يصبح هذا هو مسؤولية مدير خلفية ذاكرة التخزين المؤقت لعميل http.

يستيقظ الرهان على ذاكرة التخزين المؤقت لعميل HTTP كل 5 دقائق. إذا تجاوز إجمالي الذاكرة المستخدمة للإدخالات المخزنة مؤقتا عتبة 70٪ من حجم تجمع ذاكرة التخزين المؤقت الذي تم تكوينه، فسيتمكن العميل من التنقل عبر كل إدخال مخزن مؤقتا. إذا كان الإدخال ما يزال جديدا، فسيتركه وشأنه. إذا كان الإدخال تافها ولا يشير إليه، أي عدد ref = 0، يقوم عميل HTTP بحذف الإدخال بمفرده لأنه المالك الشرعي لذلك الإدخال. إذا كان الإدخال القديم يحتوي على عدد مرجعي 1 ولا يحتوي على أصل أو فرع مرتبط به، مما يعني أن الملف ليس في منتصف تنزيل التحديث، فيعاود عميل HTTP الاتصال بإعلام Media Player بإطلاق هذا الإدخال القديم.

أمر تحميل موجه الصوت

في بعض الأحيان، قد يكون من المفضل أو الضروري تنزيل ملف صوت يدويا إلى الموجه. في الوقت الحالي، تم إعلامنا بالفعل بأن الموجه لا ينتقل تلقائيا إلى خادم HTTP لتحديث الإدخالات القديمة المخزنة مؤقتا. يتم تحديث هذه الإدخالات فقط عند الحاجة إليها.  يمكن للتنزيل اليدوي التغلب على هذه المشكلة.

سيناريو آخر قد يكون التنزيل اليدوي مفيدا هو تحميل مطالبة صوت كبيرة مسبقا في وضع عدم البث. يمكن القيام بذلك قبل تلقي المكالمة الأولى حتى لا يواجه المتصل أي تأخير في التحميل الفوري.

لتنزيل ملف صوت معين يدويا، قم بتشغيل أمر واجهة سطر الأوامر (CLI) التالي:

تحميل المطالبة الصوتية <url>

<url> هو المكان الذي يوجد فيه الملف الصوتي على الخادم. بطبيعة الحال، من المتوقع أن يتم تكوين ذاكرة التخزين المؤقت لعميل HTTP بشكل صحيح لحفظ هذا الملف في ذاكرة التخزين المؤقت.

ملاحظة: إذا كان <url> عبارة عن مطالبة نشطة، أي قيد التشغيل حاليا، فإن واجهة سطر الأوامر هذه لا تصبح نافذة المفعول.

التاريخ والوقت

تأكد أيضا من مزامنة datetime بين البوابة وخادم وسائط HTTP. هذا واجب.

تحذير: لا تستخدم مسح ذاكرة التخزين المؤقت لعميل http في VXML GW. إذا تم إستدعاء هذا الأمر على VXML GW محمل/نشط جدا، فمن المعروف أنه يتسبب في حدوث مشاكل وفساد في الذاكرة وتعطل. لا يوصى بشكل أساسي باستخدام ذاكرة التخزين المؤقت لعميل IP http بشكل واضح. ما تقوم به هو تحديث كل المدخلات من التخزين المؤقت، وما يحدث هو أنها تنشئ وتحذف العقد من القائمة المرتبطة بذاكرة التخزين المؤقت مما يسبب بعض المشاكل. يتم الآن إزالة الأمر من Cisco IOS®. الأمر الموصى به هو set http client cache stale، ما يفعله هذا الأمر هو أنه يقوم فقط بتحديث الجزء الذي تم تغييره حديثا من ذاكرة التخزين المؤقت.