نظرة عامة على ذاكرة التخزين المؤقت المحلية لخدمة تطبيقات Azure

إشعار

ذاكرة التخزين المؤقت المحلية غير مدعومة في تطبيقات الوظائف أو تطبيقات App Service المعبأة في حاويات، كما هو الحال في حاويات Windows أو في App Service على Linux. إصدار ذاكرة التخزين المؤقت المحلية المتوفرة لهذه الأنواع من التطبيقات هو ذاكرة التخزين المؤقت للتطبيق.

يتم تخزين محتوى Azure App Service على Azure Storage ويتم عرضه بطريقة دائمة كمشاركة محتوى. يهدف هذا التصميم إلى العمل مع مجموعة متنوعة من التطبيقات ويحتوي على السمات التالية:

  • تتم مشاركة المحتوى عبر مثيلات متعددة للجهاز الظاهري (VM) للتطبيق.
  • المحتوى دائم ويمكن تعديله عن طريق تشغيل التطبيقات.
  • تتوفر ملفات السجل وملفات البيانات التشخيصية ضمن مجلد المحتوى المشترك نفسه.
  • يؤدي نشر محتوى جديد إلى تحديث مجلد المحتوى مباشرة. يمكنك عرض المحتوى نفسه على الفور من خلال موقع SCM على الويب والتطبيق قيد التشغيل (عادة ما تكون بعض التقنيات مثل ASP.NET بدء إعادة تشغيل التطبيق على بعض تغييرات الملفات للحصول على أحدث المحتوى).

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

توفر ميزة Azure App Service Local Cache طريقة عرض دور الويب للمحتوى الخاص بك. هذا المحتوى هو ذاكرة تخزين مؤقت للكتابة ولكنها تتجاهل محتوى التخزين الذي تم إنشاؤه بشكل غير متزامن في الموقع بدء التشغيل. عندما تكون ذاكرة التخزين المؤقت جاهزة، يتم تبديل الموقع للتشغيل مقابل المحتوى المخزن مؤقتًا. التطبيقات التي تعمل على ذاكرة التخزين المؤقت المحلية لها المزايا التالية:

  • تكون محصنة ضد زمن الانتقال الذي يحدث عند الوصول إلى المحتوى على Azure Storage.
  • لا تتأثر بمشكلات الاتصال بالتخزين، حيث يتم تخزين النسخة للقراءة فقط مؤقتاً على العامل.
  • لديها عدد أقل من عمليات إعادة تشغيل التطبيق بسبب تغييرات مشاركة التخزين.

إشعار

إذا كنت تستخدم Java (Java SE أو Tomcat أو JBoss EAP)، فسيتم نسخ بيانات Java الاصطناعية--ملفات .jar و.war و.ear--محلياً إلى العامل. إذا كان تطبيق Java يعتمد على الوصول للقراءة فقط إلى الملفات الأخرى أيضاً، فعيّن JAVA_COPY_ALL على true حتى يتم نسخ هذه الملفات أيضاً. إذا تم تمكين ذاكرة التخزين المؤقت المحلية، فإنه يأخذ الأسبقية على هذا التحسين الخاص ب Java.

كيف تغير ذاكرة التخزين المؤقت المحلية سلوك App Service

  • D:\home يشير إلى ذاكرة التخزين المؤقت المحلية، التي يتم إنشاؤها على مثيل الجهاز الظاهري عند بدء تشغيل التطبيق. D:\local يستمر في الإشارة إلى التخزين المؤقت الخاص بالجهاز الظاهري.
  • تحتوي ذاكرة التخزين المؤقت المحلية على نسخة لمرة واحدة من المجلدين /site و/siteextensions لمخزن المحتوى المشترك، في D:\home\site وD:\home\siteextensions، على التوالي. يتم نسخ الملفات إلى ذاكرة التخزين المؤقت المحلية عند بدء تشغيل التطبيق. يقتصر حجم المجلدين لكل تطبيق على 1 غيغابايت بشكل افتراضي، ولكن يمكن زيادته إلى 2 غيغابايت. لاحظ أنه مع زيادة حجم ذاكرة التخزين المؤقت، سيستغرق تحميل ذاكرة التخزين المؤقت وقتًا أطول. إذا قمت بزيادة حد ذاكرة التخزين المؤقت المحلية إلى 2 غيغابايت وتجاوزت الملفات المنسوخة الحد الأقصى للحجم البالغ 2 غيغابايت، فإن App Service تتجاهل بصمت ذاكرة التخزين المؤقت المحلية والقراءة من مشاركة الملفات البعيدة.

هام

عندما تتجاوز الملفات المنسخة حد حجم ذاكرة التخزين المؤقت المحلي المحدد أو عندما لا يتم تحديد أي حد، قد تفشل عمليات النشر والتبديل مع حدوث خطأ. راجع الأسئلة المتداولة لمزيد من المعلومات.

  • ذاكرة التخزين المؤقت المحلية للقراءة والكتابة. ومع ذلك، يتم تجاهل أي تعديل عند نقل التطبيق للأجهزة الظاهرية أو إعادة تشغيله. لا تستخدم ذاكرة التخزين المؤقت المحلية للتطبيقات التي تخزن البيانات الهامة للمهمة في مخزن المحتوى.
  • يحتوي D:\home\LogFiles وD:\home\Data على ملفات السجل وبيانات التطبيق. يتم تخزين المجلدين الفرعيين محليًا على مثيل الجهاز الظاهري، ويتم نسخهما إلى مخزن المحتوى المشترك بشكل دوري. يمكن للتطبيقات الاحتفاظ بملفات السجل والبيانات عن طريق كتابتها إلى هذه المجلدات. ومع ذلك، فإن النسخة إلى مخزن المحتوى المشترك هي أفضل جهد، لذلك من الممكن فقدان ملفات السجل والبيانات بسبب تعطل مفاجئ لمثيل الجهاز الظاهري.
  • يتأثر دفق السجل بنسخة أفضل جهد. يمكنك ملاحظة ما يصل إلى تأخير لمدة دقيقة واحدة في السجلات المتدفقة.
  • في مخزن المحتوى المشترك، هناك تغيير في بنية المجلد لمجلدات LogFiles وData للتطبيقات التي تستخدم ذاكرة التخزين المؤقت المحلية. هناك الآن مجلدات فرعية فيها تتبع نمط تسمية "المعرف الفريد" + الطابع الزمني. يتوافق كل مجلد من المجلدات الفرعية مع مثيل الجهاز الظاهري حيث يتم تشغيل التطبيق أو تشغيله.
  • تبقى المجلدات الأخرى في D:\home في ذاكرة التخزين المؤقت المحلية ولا يتم نسخها إلى مخزن المحتوى المشترك.
  • يتم نشر التطبيق من خلال أي أسلوب مدعوم مباشرة إلى مخزن المحتوى المشترك الدائم. لتحديث المجلدين D:\home\site وD:\home\siteextensions في ذاكرة التخزين المؤقت المحلية، يجب إعادة تشغيل التطبيق. لجعل دورة الحياة سلسة، راجع المعلومات لاحقا في هذه المقالة.
  • لا تزال طريقة عرض المحتوى الافتراضية لموقع SCM هي طريقة عرض مخزن المحتوى المشترك.

تمكين ذاكرة التخزين المؤقت المحلية في App Service

إشعار

ذاكرة التخزين المؤقت المحلية غير مدعومة في المستوى F1 أو D1.

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

تكوين ذاكرة التخزين المؤقت المحلية باستخدام مدخل Microsoft Azure

يمكنك تمكين ذاكرة التخزين المؤقت المحلية على أساس كل تطبيق ويب باستخدام إعداد التطبيق هذا: WEBSITE_LOCAL_CACHE_OPTION = Always

Azure portal app settings: Local Cache

تكوين ذاكرة التخزين المؤقت المحلية باستخدام Azure Resource Manager

...

{
    "apiVersion": "2015-08-01",
    "type": "config",
    "name": "appsettings",
    "dependsOn": [
        "[resourceId('Microsoft.Web/sites/', variables('siteName'))]"
    ],

    "properties": {
        "WEBSITE_LOCAL_CACHE_OPTION": "Always",
        "WEBSITE_LOCAL_CACHE_SIZEINMB": "1000"
    }
}

...

تغيير إعداد الحجم في ذاكرة التخزين المؤقت المحلية

بشكل افتراضي، حجم ذاكرة التخزين المؤقت المحلية هو 1 غيغابايت. يتضمن هذا المجلدين /site و/siteextensions التي يتم نسخهما من مخزن المحتوى، بالإضافة إلى أي سجلات ومجلدات بيانات تم إنشاؤها محليًا. لزيادة هذا الحد، استخدم إعداد التطبيق WEBSITE_LOCAL_CACHE_SIZEINMB. يمكنك زيادة الحجم حتى 2 غيغابايت (2000 ميغابايت) لكل تطبيق. لاحظ أن تحميل ذاكرة التخزين المؤقت المحلية سيستغرق وقتًا أطول مع زيادة الحجم.

أفضل الممارسات لاستخدام App Service Local Cache

نوصي باستخدام ذاكرة التخزين المؤقت المحلية بالاقتران مع ميزة البيئات المرحلية.

  • أضف إعداد التطبيق الملصقWEBSITE_LOCAL_CACHE_OPTION بالقيمة Always إلى فتحة Production. إذا كنت تستخدم WEBSITE_LOCAL_CACHE_SIZEINMB، فأضفه أيضًا كإعداد ملصق إلى فتحة Production.
  • إنشاء فتحة التقسيم المرحلي ونشرها في فتحة التقسيم المرحلي. عادة ما لا تقوم بتعيين فتحة التقسيم المرحلي لاستخدام ذاكرة التخزين المؤقت المحلية لتمكين دورة حياة سلسة لـ build-deploy-test للتقسيم المرحلي إذا حصلت على فوائد ذاكرة التخزين المؤقت المحلية لفتحة الإنتاج.
  • اختبر موقعك مقابل فتحة التقسيم المرحلي.
  • عندما تكون مستعدًا، قم بإصدار عملية تبديل بين فتحات التقسيم المرحلي والإنتاج.
  • تتضمن الإعدادات الملصقة الاسم والثبات على فتحة. لذلك عندما يتم تبديل فتحة التقسيم المرحلي إلى الإنتاج، فإنها ترث إعدادات تطبيق ذاكرة التخزين المؤقت المحلية. سيتم تشغيل فتحة الإنتاج التي تم تبديلها حديثًا مقابل ذاكرة التخزين المؤقت المحلية بعد بضع دقائق وسيتم تجهيزها كجزء من تجهيز الفتحة بعد التبديل. لذلك عند اكتمال تبديل الفتحة، يتم تشغيل فتحة الإنتاج مقابل ذاكرة التخزين المؤقت المحلية.

الأسئلة الشائعة (FAQ)

ماذا لو تم تجاوز حد حجم ذاكرة التخزين المؤقت المحلية؟

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

 حجم ذاكرة التخزين المؤقت المحلية الملفات المتكيفة النتيجة
≤ 2 غيغابايت ≤ حجم ذاكرة التخزين المؤقت المحلية القراءات من ذاكرة التخزين المؤقت المحلية.
≤ 2 غيغابايت > حجم ذاكرة التخزين المؤقت المحلية القراءة من المشاركة عن بعد.
ملاحظة: قد تفشل عمليات التوزيع والتبديل مع حدوث خطأ.

كيف يمكنني معرفة ما إذا كانت ذاكرة التخزين المؤقت المحلية تنطبق على تطبيقي؟

إذا كان تطبيقك يحتاج إلى مخزن محتوى عالي الأداء وموثوق به، ولا يستخدم مخزن المحتوى لكتابة البيانات الهامة في وقت التشغيل، وكان حجمه أقل من 2 غيغابايت، فإن الإجابة هي "نعم"! للحصول على الحجم الإجمالي لمجلدي /site و/siteextensions، يمكنك استخدام ملحق الموقع "استخدام قرص Azure Web Apps".

كيف يمكنني معرفة ما إذا كان موقعي قد انتقل إلى استخدام ذاكرة التخزين المؤقت المحلية؟

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

لقد قمت للتو بنشر تغييرات جديدة، ولكن يبدو أن تطبيقي لا يحتوي عليها. لماذا؟

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

إشعار

خيار التشغيل من نشر الحزمة غير متوافق مع ذاكرة التخزين المؤقت المحلية.

أين توجد مكتباتي؟

مع ذاكرة التخزين المؤقت المحلية، تبدو السجلات ومجلدات البيانات مختلفة قليلاً. ومع ذلك، تظل بنية المجلدات الفرعية كما هي، باستثناء أن المجلدات الفرعية متداخلة ضمن مجلد فرعي بتنسيق "معرف الجهاز الظاهري الفريد" + الطابع الزمني.

لقد تم تمكين ذاكرة التخزين المؤقت المحلية، ولكن لا يزال يتم إعادة تشغيل تطبيقي. ما سبب ذلك؟ اعتقدت أن ذاكرة التخزين المؤقت المحلية ساعدت في إعادة تشغيل التطبيق بشكل متكرر.

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

هل تستبعد ذاكرة التخزين المؤقت المحلية نسخ أي أدلة إلى محرك الأقراص المحلي الأسرع؟

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

كيفية مسح سجلات ذاكرة التخزين المؤقت المحلية بعد عملية إدارة الموقع؟

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

لماذا تبدأ App Service في عرض الملفات المنشورة مسبقًا بعد إعادة التشغيل عند تمكين ذاكرة التخزين المؤقت المحلية؟

في حالة بدء App Service في عرض الملفات التي تم نشرها مسبقا عند إعادة التشغيل، تحقق من وجود إعداد التطبيق - "WEBSITE_DISABLE_SCM_SEPARATION=true". بعد إضافة هذا الإعداد، تبدأ أي عمليات نشر عبر KUDU في الكتابة إلى الجهاز الظاهري المحلي بدلاً من التخزين المستمر. يجب الاستفادة من أفضل الممارسات المذكورة أعلاه في هذه المقالة، حيث يجب دائمًا إجراء عمليات التوزيع إلى فتحة التقسيم المرحلي التي لا تحتوي على ذاكرة التخزين المؤقت المحلية ممكنة.

موارد إضافية

متغيرات البيئة ومرجع إعدادات التطبيق