SPIP

[ar] [ast] [bg] [br] [ca] [co] [cpf] [cs] [da] [de] [en] [eo] [es] [eu] [fa] [fon] [fr] [gl] [id] [it] [ja] [lb] [nl] [oc] [pl] [pt] [ro] [ru] [sk] [sv] [tr] [uk] [vi] [zh] Espace de traduction

تحميل

ادارة الذاكرة المخبأة

وتجنيب جهاز الخدمة الاشغال الشاقة التي هو بغنى عنها

كانون الثاني (يناير) 2004 — به روز آوري : آب (أغسطس) 2010

كل اصدارات هذا المقال:


نذكر ان هذا التدريب لا يتوافق الا مع إصدارات SPIP حتى SPIP 1.8.3 ويعتبر غير ذي نفع منذ الإصدار SPIP ١.٩. إنه قيد إعادة الكتابة في المجال الخاص->/ecrire]

على انه يمكنك اتباع هذا التدريب بتجاهل ملفات php3. وبوضع ملفات html في مجلد /squelettes الذي يجب إنشاؤه في أصل الموقع.

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

منذ SPIP ١.٩، يتم تحديد فترة حياة الذاكرة المخبأة المذكورة أدناه، في ملف html من خلال علامة #CACHE{فترة}، مثلاً #CACHE{3600}

وهنا تلخيص لهؤلاء وللمتسرعين: في ملفات النداء tutorial.php3 يجب تحديد المتغير $delais = 3600; بدلاً من صفر.

...

عندما يتم طلب صفحة ما من SPIP، يقوم هذا الاخير بالتأكد من انه لم يعالجها في وقت سابق. فــــــــــــإذا كـــــــــــــان عنـــــــــــــوان URL المطــلــــــــــــوب هــــــــــــو http://yoursite.net/tutorial.php3?id_article=12، سيبحث SPIP في دليل CACHE/ ليرى اذا كان هذا الملف (اي المقال رقم 12) موجوداً. واذا وجده، سيقارن عمر الملف بقيمة $delais المحددة في ملف النداء tutorial.php3.

في مثالنا قمنا بتحديد متغيرات $delais=0;، مما يؤدي الى اعادة معالجة دائمة للصفحات لدى كل زيارة لها. لنقم بتغيير القيمة من صفر الى 3600 (بالثواني).

هكذا لا تتم اعادة معالجة صفحتنا الا في حال طلبها من قبل احد الزوار وكانت نسختها الموجودة في الذاكرة المخبأة اقدم من ساعة واحدة (اي 3600 ثانية). اذا كانت هذه النسخة احدث من ساعة واحدة، يكتفي SPIP بقراءة هذه النسخة [1] ويسترجع النتيجة دون ان يتصل بقاعدة البيانات (اللهم الا لإدخال زيارة جديدة في جدول احصاءات الزيارات).

كيف يتم تحديد $delais بشكل يحسّن نسبة التفاعل مع المستخدم على العبء المفروض على جهاز الخدمة؟ ليس هناك اي حل سحري ولكن لا تتردد في تحديد فترة تصل الى يوم واحد (اي $delais=24*3600;) او اكثر للمقالات والاقسام. اما الصفحات الاكثر اهمية، فيمكنها ان تتمتع بفترات $delais اصغر (عشرون دقيقة او ساعة مثلاً) اذا كان يفترض من الموقع ان يتفاعل مع الكثير من عمليات تصديق الاخبار والمواقع المرخصة. واذا كان موقعك على جهاز خدمة يستضيف مواقع اخرى، فعليك باحترام الآخرين ولا تحتكر اوقات المعالجة من اجل صفحات لا تتغير الا نادراً: لا سيما وان المعالجة قد تستغرق بعض الوقت في المقالات الطويلة او صفحات المحتويات الكثيفة مما يؤدي الى ابطاء تصفح موقعك نفسه...

كيف يتم اطلاق تحديث خارج الفترة المحددة؟ لقد حددنا للتو قيمة كبيرة جداً للمتغير $delais وفوجئنا باكتشاف خطأ املائي في احدى الصفحات. وبعد تصحيح الخطأ في المجال الخاص، نتساءل كيف يمكن تحديث الصفحة المناسبة في الموقع العمومي.

- في المجال الخاص، يؤدي النقر على «عرض مباشر» الى اعادة معالجة الصفحات المناسبة لـ#URL_ARTICLE او #URL_RUBRIQUE العائد الى المقال او القسم المناسب. هذه هي الطريقة الاكثر شيوعاً. والا؟

- في القسم «تفريغ الذاكرة المخبأة» في «اعداد الموقع» في المجال الخاص، هناك زر يقوم بحذف كل الملفات الموجودة في الذاكرة المخبأة (وهي طريقة مفيدة في حال ادخال كمية كبيرة من التعديلات على الصفحات في موقع معقد، والا فالافضل تجنب هذه الطريقة).

- اما ابسط طريقة فهي السماح لـSPIP في الصفحة التي تستقبلك لدى دخولك الى المجال الخاص، «بوضع كعكة ادارة» (cookie). فتلتصق هذه الكعكة بمتصفحك مما يمكّن SPIP من التعرف عليك عندما يرسل لك صفحات الموقع العمومي: فيعرض عليك عندها زر «اعادة تحديث هذه الصفحة».

عودة الى السياق: نعود هنا الى مفهوم السياق. فإذا تم نداء الصفحة النموذجية بسياق id_article او id_rubrique او id_breve، يظهر زر آخر عندما يعثر SPIP على الكعكة: «تعديل هذا المقال (او القسم او الخبر)» يقودك مباشرة الى الصفحة المناسبة في المجال الخاص.

تفاصيل اخيرة:
- لأسباب واضحة، لا يتعاطى محرك البحث بالذاكرة المخبأة ويتم تحديث الصفحات التي تحتوي على منتديات كلما جاءت مشاركة جديدة.
- تم تقسيم دليل CACHE/ في هرمية الموقع الى 16 دليل فرعي مرقمة 0, 1, 2... 9, A, B... F حيث يتم توزيع نسخات الملفات المخبأة بشكل عشوائي؛ وتعرف هذه العملية بـ«تحشية الذاكرة المخبأة» (cache hashing) ويكفي ذلك لتستأهل الحديث عنها.
- يتم استغلال الملفات المخبأة حتى لو طرأ عطل على قاعدة البيانات مما يكفل استمرارية الموقع حتى خلال اعطال خادم MySQL.

حواشي

[1للأخصائيين، تقتصر العملية على امر include بلغة PHP للملف المناسب مما يتيح تنفيذ الاوامر البرمجية من الذاكرة المخبأة...


عرض الصفحة النموذجية لهذه الصفحة موقع صمم بنظام SPIP | جاي ترجمه | المجال الخاص