widget-cache

أكتب هذه التدوينة لأعرّف عن خاصية الـ “كاش” في المواقع، و بالأخص مدونات الوورد بريس. المقال موجّه للعارفين بمجال تطوير المواقع، هدفه إلقاء الضوء على هذه الخاصية و الفائدة التي يمكن أن تعود بها على مدونتك. أما فيما يخص إستخدامها و الدعم الفني فأفضّل أن تلجأ أنت للمختصيّن. هيا نشمّر عن السواعد.

تمهيد

المواقع فيما مضى كانت عبارة عن صفحات HTML ثابتة (static) يتم تعديلها يدويّا و رفعها إلى السيرفر أو الإنترنت كلما أضيف إليها شيئا جديدا. تصوّروا أنني كنت أفعل هذا قبل سنتين في موقع زراعة نت!

نشط بعد ذلك إستخدام لغات البرمجة المخصّصة لتطوير المواقع، كالـ php و asp و غيرها، و تطوّرت المتصفحّات و باتت تدعم نسخا متقدّمة من لغة الجافاسكريبت. و بوجود هذه اللغات البرمجية،أصبحت المواقع أكثر تعقيدا من حيث التصميم، و بات بالإمكان حفظ معلوماتها و بياناتها في أماكن آمنة على الإنرنت تسمّى قواعد البيانات (databases)، الأمر الذي جعل عملية تحديث بيانات المواقع أسهل و أسرع و أكثر ديناميكية (إبتسم أيها المدوّن، بتنا اليوم نكتب تدوينة و ننشرها بعد سنة، بفضل الـ php و قاعدة البيانات).

المشكلة

ليس هناك كامل إلا ربّك. إنك حين تتصفح أي مدونة، ينشأ عدد من الإتصالات (queries) بين المدوّنة و السيرفر الخاص بقاعدة البيانات (MySQL server). المسألة ليست محض مزاج، بل كما قلت آنفا، المقالات التي تكتبها في مدونتك تكون محفوظة في قواعد البيانات. لذلك، لن تظهر التدوينات أو المقالات للزوار إذا لم يتم جلبها من سيرفر قاعدة البيانات.

تتسائل من الحقير الذي يُجري تلك الإتصالات من المدونة؟ إنه سيرفر آخر: سيرفر الـ php!

لغة الـ php هي تلك المكتوبة في ملفات مدونتك، أي في ملفات القالب و ملفات سكربت الوورد بريس نفسه. لاحظ كيف أن صفحات لوحة التحكم في مدونتك تنتهي روابطها بـ .php .. تكمن وظيفة هذه اللغة البرمجية في إدارة الكثير من الأمور التي لا تقدر على فعلها لغة الـ HTML، منها الأمور المتعلّقة بقاعدة البيانات (حذف، إضافة، تعديل أي تدوينة أو معلومة محفوظة بقاعدة البيانات إلخ ..)

الجدير ذكره أن لغة الـ HTML لا تتأثر بنسبة كبيرة بسرعة السيرفر الذي يستضيف موقعك أو مدونتك، لأن الذي يقرأها و يفهمها هو المتصفّح و ليس السيرفر، و من هنا تُعتبر إحدى الـ client-side scripts. أما الصفحات المكتوبة بلغة الـ php  فلا يفهمها المتصفح، لذلك يجب أن يقرأها سيرفر الـ php على الإنترنت أولا، ثم يحوّلها إلى HTML ثم يرسلها إلى المتصفح لكي يعرضها للزوار .. و من هنا يجب أن يكون سيرفر الـ php الذي يستضيف موقعك سريعا. أضيف -لمجرّد المعرفة- أن لغة الـ php من الـ server-side scripts.

شو المشكلة فإذن؟

في كل مرة تفتح صفحة من مدونتك هناك على الأقل حوالي 30 عملية إتصال تجري مع قاعدة البيانات. لم تكن صفحات المواقع تقوم بأي إتصال خارجي لأن المعلومات التي كانت تعرضها تلك الصفحات كانت محفوظة بداخل الملفات نفسها – ملفات الـ HTML. من هنا، كانت المواقع في الماضي سريعة من حيث التصفّح.

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

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

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

الحل: الـ cache؟

نحن بحاجة إلى حل منطقي، فكّروا معي. في كل مرة يدخل أحدهم مدونتك مثلا، تحدث عملية الإتصال بقاعدة البيانات لكي تعرض للزائر التصنيفات الموجودة في مدونتك. ما فائدة هذا الإتصال إذا كانت تصنيفاتك لا تتغير -لنقُل- إلا مرة واحدة بالشهر؟ الحل فإذن هو حفظ التصنيفات الموجودة في مدونتك في ملف html و تفادي الإتصال بقاعدة البيانات من أجلها. هذا بالنسبة للتصنيفات، ماذا عن الإضافة الخاصة بعرض “أكثر التدوينات قراءة” أو “آخر المعلّقين” و غيرها من الإضافات التي تعتمد على جلب معلومات من قاعدة البيانات؟

دع الأمر لإضافة مثل WP-Widget-Cahe لكي تقوم بالمهمة المطلوبة. أنا أستخدمها حاليا في مدونتي و أجدها مناسبة جدا لكل المدونات.

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

إضافة wp-widget-cache تحفظ بيانات الخانات (ما يسمى widgets) التي تظهر في العامود الجانبي (sidebar)، تحفظها في ملف html. هذا يعني أن عدد الإتصالات بقاعدة البيانات في مدونتك ستقل. إستطعت أنا مثلا أن أخفّض معدّل الإتصالات في صفحات مدونتي من 70 إلى 33 بواسطة هذه الإضافة.

يبقى السؤال: ما دامت هناك معلومات متجددة بوتيرة سريعة في المدونة، كيف سيكون التعامل معها؟ سأعيد صياغة السؤال: إذا قلنا بأنه لديك خانة في مدونتك تُظهر آخر المعلّقين على التدوينات، كيف سيتم تحديث بيانات هذه الخانة إذا كانت تلك البيانات محفوظة في ملف html بدلا من إستدعائها من قاعدة البيانات؟

يكون الجواب: إضافات الـ cache تتيح لك خيارات عديدة للتحكم بكثير من الأمور، منها إمكانية تحديث ملف الـ html تلقائيا عند إنقضاء مدة زمنيّة معيّنة أنت تحدّدها. بل يمكن حتى تحديث الملف تلقائيا عند إضافة أو تحديث أي تدوينة او تصنيف أو تعليق ..

مزيدا من الحلول

إضافة WP-Super-Cache تأخذك في رحلة أبعد من مجرد حفظ خانات العامود الجانبي في ملف html. هذه الإضافة تحفظ صفحات مدونتك بكاملها في ملفات html بحيث لا يعود هناك ضرورة لإجراء إلا عدد محدود جدا من الإتصالات بقاعدة البيانات. هذا الشيء سيحوّل مدونتك إلى ما يشبه المواقع التقليدية المصممة في برنامج الفرونت بيج. تسمح هذه الإضافة بتسريع عملية تصفح مدونتك بنسبة تتعدى الـ 50 بالمئة أحيانا.

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

إعتراف

أعلم تماما بأنه من الصعب جدا شرح موضوع بهذا الجحم في 1000 كلمة يكتبها إنسان إختصاصه الأدب. أتمنى أن تكونوا إستفدتم من هذا الشرح السريع. لا أحتاج لأن أفكّر في شكركم على حسن الإستماع، فعبارات الشكر خاضعة لعملية الكاش! و تذكروا دائما بأنه لا عيب في السؤال. أرجو أن أسمع رأي الخبراء فيما قلته.