10. November 2026 | Eigenentwicklung | Odoo, Performance und Suchmaschinen
يقوم موقع أودو الإلكتروني بإعادة تصيير كل صفحة مع كل طلب: استعلامات قاعدة البيانات، والقوالب، والترجمات، والأسعار. لا يكون ذلك ملحوظاً مع الزائر الفردي؛ ولكن عندما تطلب محركات البحث ومفهرسات الذكاء الاصطناعي مئات أو آلاف الصفحات بعدة لغات، يتحول الأمر إلى حمل دائم، ويضطر العملاء الحقيقيون للانتظار. ولهذا الغرض، طورنا الوحدة البرمجية website_page_cache لإصدار Odoo 19 ونشرناها كـبرمجية مفتوحة المصدر (LGPL-3) على GitHub: حيث تُقدَّم صفحات المتجر والمدونة المطلوبة من زوار مجهولين بشكل شبه ثابت من ذاكرة مؤقتة، إما من ملفات أو من الذاكرة العشوائية (RAM)، ويؤدي أي تغيير – حتى لو كان على ترجمة – إلى إزالة الصفحات المتأثرة تلقائياً من الذاكرة المؤقتة.
أمر هام لكل من يرغب في العثور عليه: هذه الوحدة لا تحظر أي محرك بحث ولا أي برنامج زحف للذكاء الاصطناعي؛ فجميع أدوات الفهرسة تتلقى المحتوى نفسه الذي يراه أي زائر، ولكن بسرعة أكبر. يوضح هذا المقال كيفية عمل التخزين المؤقت، وشكل لوحة التحكم (مع لقطات شاشة توضيحية)، وكيفية معرفة ما إذا كانت صفحاتك تتسع في الذاكرة العشوائية ومقدار RAM الإضافية اللازمة، وما هي قواعد الأمان المطبقة، وكيفية تثبيت الوحدة.
محتويات هذا المقال
- ملخص موجز
- المشكلة: عبء برامج الزحف على مواقع أودو الإلكترونية
- آلية عمل التخزين المؤقت للصفحات
- الملفات أو ذاكرة RAM: اختيار موقع التخزين
- هل يتسع الموقع الإلكتروني في ذاكرة RAM؟ وما مقدار الذاكرة الناقصة؟
- التعديلات والترجمات تُفرغ الذاكرة المؤقتة من الصفحات القديمة
- لوحة التحكم والإحصاءات
- الأمان: ما لا يُجلب أبداً من الذاكرة المؤقتة
- محركات البحث ومفهرسات الذكاء الاصطناعي: لا حظر لأي منها
- التثبيت والإعدادات
- حدود ينبغي لك معرفتها
- الأسئلة الشائعة
- الدعم من Biricon IT Services
ملخص موجز
| الموضوع | ما ينطبق |
|---|---|
| الوحدة | website_page_cache لإصدار Odoo 19، بترخيص LGPL-3، ومتاح للعامة على GitHub |
| ما الذي يتم تخزينه مؤقتاً؟ | صفحات المتجر والمدونة العامة (القوائم، الفئات، المنتجات، المقالات) بجميع اللغات في كل موقع إلكتروني |
| لمن؟ | للزوار المجهولين فقط، ولطلبات GET دون معلمات بحث فقط، ولحالة الاستجابة 200 بتنسيق HTML فقط |
| موقع التخزين | ملفات على القرص أو في ذاكرة RAM (tmpfs، مشتركة بين جميع عمليات التشغيل)؛ تلقائياً حسب المساحة المطلوبة |
| حداثة البيانات | يُنشئ أي تغيير (بما في ذلك الترجمات وعمليات الاستيراد والبرمجيات النصية) قيداً في السجل عبر مُشغّلات قاعدة البيانات ويُبطل صلاحية الصفحات المعنية |
| لوحة التحكم | الإعدادات، والحالة، والإحصاءات (الإصابات الناجحة، والإخفاقات، وزمن تشغيل الخادم الموفَّر) واختبار "هل يتسع في ذاكرة RAM؟" بما في ذلك "ذاكرة RAM الإضافية اللازمة" |
| محركات البحث والذكاء الاصطناعي | لا حظر ولا تقييد لمعدل الطلبات؛ فالجميع يحصلون على الصفحات ذاتها، ولكن بسرعة أكبر |
| الإيقاف في حالات الطوارئ | مفتاح واحد (enabled = 0) يعطّل التخزين المؤقت في جميع عمليات التشغيل خلال 30 ثانية |
المشكلة: عبء برامج الزحف على مواقع أودو الإلكترونية
أودو هو نظام متكامل لتخطيط موارد المؤسسات (ERP)، والموقع الإلكتروني هو وحدة واحدة من بين وحدات عديدة. تمر كل صفحة يطلبها زائر أو روبوت بالمسار نفسه: معالجة الطلب، والاستعلام من قاعدة البيانات، وتحميل بيانات المنتجات والأسعار، وتصيير قالب QWeb، وتطبيق الترجمات، وتقديم النتيجة النهائية. يستغرق ذلك بحسب الصفحة بضع مئات من المللي ثانية، ويشغل خلال هذه المدة إحدى عمليات التشغيل القليلة المتاحة.
بالنسبة إلى محركات البحث ومفهرسات الذكاء الاصطناعي، يشكل هذا الأمر عبئاً مستمراً:
- لغات متعددة وعناوين كثيرة: الصفحة المتوفرة بـ 46 لغة تمثل بالنسبة لبرنامج الزحف 46 عنواناً مختلفاً.
- يُطلب كل عنوان على حدة، وغالباً من عدة جهات إرسال موزعة في الوقت نفسه. ولا تجدي الذاكرة المؤقتة التقليدية للمتصفح نفعاً هنا، لأن كل طلب يخص عنواناً جديداً.
- عمليات تشغيل محدودة: تعمل خدمة أودو عادةً بعدد محدود من العمليات. فإذا انشغلت بطلبات برامج الزحف، سينتظر الزوار الحقيقيون في طابور التوقف.
- المحتوى نفسه يُبنى مجدداً في كل مرة: نادراً ما يتغير مقال المدونة، ومع ذلك يُعاد تجميعه بعمليات مكلفة مع كل طلب.
إن المخرج البديهي – المتمثل في حظر برامج الزحف – ليس خياراً وارداً لشركة ترغب في العثور عليها. فالظهور في محركات البحث وإجابات الذكاء الاصطناعي أمر بالغ القيمة. والأفضل من ذلك هو تقديم الصفحات بسرعة فائقة تجعل العبء غير محسوس تقريباً. وهذا بالضبط ما يفعله التخزين المؤقت للصفحات.
آلية عمل التخزين المؤقت للصفحات
ترتبط الوحدة بنقطة استقبال الطلبات في أودو (ir.http). ومع كل طلب لصفحة، تقرر في أجزاء من المللي ثانية ما إذا كان من الممكن جلب الصفحة من الذاكرة المؤقتة، ثم تقدمها دون الرجوع لقاعدة البيانات، ودون معالجة القوالب، ودون إعادة تصيير.
- التحقق: يُشترط أن يكون الطلب من نوع
GETلمستخدم مجهول دون معلمات بحث على مسار مسموح به (المتجر، الفئات، المنتجات، المدونة). أما كل ما عدا ذلك فيمر كالمعتاد عبر أودو. - مفتاح التخزين المؤقت: يتكون من الموقع الإلكتروني، والمضيف، واللغة، والمسار، وقائمة الأسعار، والموقف الضريبي، وحالة الموافقة على ملفات تعريف الارتباط. وبذلك، لا يشترك الزوار الذين يفترض أن يشاهدوا محتوى مختلفاً في القيد نفسه إطلاقاً.
- إصابة ناجحة: إذا توفر قيد محدّث، يتم تقديمه. ويُعاد تعيين رمز CSRF في الصفحة مع كل طلب، مع الاستمرار في احتساب مشاهدات مقالات المدونة.
- إخفاق التخزين المؤقت: إذا كان القيد مفقوداً أو متقادماً، يقوم أودو بتصيير الصفحة كالمعتاد. وإذا كانت النتيجة قابلة للتخزين المؤقت (الحالة 200، وتنسيق HTML، ودون ملفات تعريف ارتباط، ودون معرف جلسة في النص)، تُحفظ الصفحة؛ ليمثل الطلب التالي إصابة ناجحة.
- ظاهر في الترويسة: تحمل كل استجابة الترويسة
X-Page-Cache: HITأوMISS، مما يتيح التحقق مما حدث باستخدام أي أداة.
ما مقدار الزيادة في السرعة؟
في نظام الاختبار لدينا (نسخة من مواقعنا، تضم بضع مئات من الصفحات)، بلغ متوسط وقت تصيير الصفحة نحو 490 مللي ثانية، بينما استغرق تقديمها من الذاكرة المؤقتة نحو 23 مللي ثانية، أي أسرع بنحو عشرين ضعفاً. وكلما كانت الصفحة أكثر تعقيداً، زادت الفائدة. كما تحسب لوحة التحكم من هاتين القيمتين الوقت التقديري الموفَّر من زمن تشغيل الخادم.
الملفات أو ذاكرة RAM: اختيار موقع التخزين
يتيح نظام التخزين المؤقت موقعين للحفظ. كلاهما متاح ومشترك لجميع عمليات تشغيل أودو، وبالتالي تتوفر كل صفحة مرة واحدة فقط، وليس نسخة لكل عملية.
| الإعداد | أين تُحفظ الصفحات؟ | الخصائص |
|---|---|---|
| الملفات | دليل داخل مجلد بيانات أودو، لكل قاعدة بيانات | تبقى البيانات بعد إعادة التشغيل؛ كما أن نظام التشغيل يحتفظ بالصفحات المتكررة الاستخدام في الذاكرة على أي حال |
| الذاكرة العشوائية (RAM) | tmpfs unter /dev/shm | أسرع استجابة في التقديم؛ تُفقد البيانات عند إعادة تشغيل الخادم وتُعاد تهيئتها بكل بساطة |
| تلقائي | في ذاكرة RAM، طالما أنها تتسع لكل شيء؛ وإلا فعلى شكل ملفات | تتخذ مهمة الصيانة (كل 10 دقائق) القرار استناداً إلى التقدير؛ وتظل على خيار RAM في حالتي "يتسع" و"بالكاد يتسع"، حتى لا يتغير الاختيار باستمرار |
يُعد الخيار تلقائي هو الأنسب لمعظم عمليات التثبيت: فهو يمنحك سرعة ذاكرة RAM متى ما توفرت المساحة، ويعود تلقائياً إلى حفظ الملفات عند عدم توفرها دون الحاجة إلى أي تدخل.
هل يتسع الموقع الإلكتروني في ذاكرة RAM؟ وما مقدار الذاكرة الناقصة؟
تعتمد إمكانية استخدام التخزين المؤقت في RAM على ثلاثة أمور: عدد الصفحات، ومتوسط حجمها، والذاكرة المتاحة. وتجري لوحة التحكم هذه العملية الحسابية نيابة عنك:
- عدد الصفحات: يُحسب لكل موقع إلكتروني عدد المنتجات المنشورة، وصفحات قوائم المتجر، والفئات، ومقالات المدونة وقوائمها، ثم يُضرب الناتج في عدد اللغات.
- حجم الصفحة: بمجرد تخزين الصفحات في الذاكرة المؤقتة، يُقاس المتوسط الفعلي؛ وإلى حين ذلك، تُعتمد قيمة تقديرية افتراضية.
- المساحة المخصصة للتخزين المؤقت: أقل قيمة بين ميزانية RAM المحددة، وحجم tmpfs، ونصف الذاكرة العشوائية المتاحة. والهدف ألا يواجه الخادم أبداً نقصاً في الذاكرة بسبب التخزين المؤقت.
- التقييم: "يتسع مع احتياطي"، أو "بالكاد يتسع"، أو "كبير جداً"، أو "التخزين المؤقت في RAM غير متاح". ويسري تقييم "يتسع" إذا كانت المساحة المطلوبة لا تتجاوز 80 بالمائة من المساحة المتاحة.
جديد: ما مقدار ذاكرة RAM الإضافية التي قد تلزم؟
إذا لم تتسع الذاكرة المؤقتة، سيرغب المستخدم في معرفة ما يتعين تغييره. لذلك تُظهر لوحة التحكم سطراً محدداً تحت التقييم: "ذاكرة RAM إضافية لازمة للتخزين المؤقت في RAM: نحو ... من الذاكرة الإضافية على هذا الخادم" – أو "لا شيء"، إذا كانت المساحة كافية بالفعل. وإذا كان الإعداد هو المحدود للغاية وليس الخادم، فسيُذكر تحته أي إعداد تحديداً: ميزانية RAM الخاصة بالوحدة أو حجم tmpfs (/dev/shm).
العملية الحسابية الكامنة وراء ذلك بسيطة وواضحة:
- المساحة المطلوبة = الصفحات × متوسط حجم الصفحة.
- مع الاحتياطي = المساحة المطلوبة مقسومة على 0.8. ويجب أن تتسع ميزانية RAM ومساحة tmpfs لهذه القيمة حتى يكون التقييم "يتسع".
- الذاكرة الحرة: نظراً لأن التخزين المؤقت لا يجوز له استهلاك أكثر من نصف الذاكرة العشوائية المتاحة، يحتاج الخادم إلى ضعف القيمة المحددة في الخطوة 2 على الأقل كذاكرة حرة متاحة. وإذا كان هناك نقص، فإن الفارق يمثل ذاكرة RAM الإضافية اللازمة.
المثال الوارد في الصورة (12,000 صفحة بحجم 25 كيلوبايت لكل منها) هو مجرد نموذج للتوضيح الحسابي، وليس قياساً فعلياً لصفحاتنا. ففي المواقع الصغيرة، تكفي بضع عشرات من الميغابايت؛ وبيانات العينة الموضحة في لقطات الشاشة اكتفت بنحو 13 ميغابايت فقط.
نقطة مهمة للتوضيح: لا يحتسب هذا التقدير إصدارات قوائم الأسعار أو البلدان الإضافية؛ لذا ينبغي لمن يستخدم عدداً كبيراً منها أن يضع في الحسبان بعض المساحة الاحتياطية. علاوة على ذلك: فإن ميزانية RAM المحدودة للغاية هي السبب الأكثر شيوعاً لبقاء التحديد التلقائي على خيار الملفات – وليس نقص الذاكرة العشوائية. وتُظهر لوحة التحكم في هذه الحالة هذا السطر تحديداً.
التعديلات والترجمات تُفرغ الذاكرة المؤقتة من الصفحات القديمة
لا تكون الذاكرة المؤقتة ذات فائدة إلا إذا كانت لا تقدم صفحات قديمة على الإطلاق. فالاعتماد على مجرد حد زمني بحت ("الاستبعاد كل اثنتي عشرة ساعة") سيكون شديد التقريب: إذ سيتعين على سعر معدّل أو خطأ مطبعي مصحح الانتظار لمدة تصل إلى اثنتي عشرة ساعة. ولهذا السبب تعمل الوحدة استناداً إلى المحتوى.
- مُشغّلات قاعدة البيانات: توجد مُشغّلات PostgreSQL على جميع الجداول التي يمكن أن تؤثر في الصفحة (المنتجات، والمتغيرات، والصور، والمخزون، والسمات، والفئات، والأسعار، والضرائب، وقوائم الأسعار، ومقالات المدونة والوسوم، وبيانات الشركاء والشركات، وطرق العرض، والأصول، والقوائم، واللغات، وإعدادات المواقع الإلكترونية). وتقوم هذه المُشغّلات بتسجيل كل تغيير في سجل التغييرات.
- التبعيات وحالة قاعدة البيانات: تحتفظ كل صفحة مخزنة مؤقتاً بمعلومات السجلات التي تعرضها، وبحالة قاعدة البيانات التي أُنشئت عندها.
- المطابقة: إذا وُجد قيد في سجل التغييرات تم إنشاؤه بعد هذه الحالة ويخص أحد هذه السجلات، تُعتبر الصفحة متقادمة.
- إعادة التخزين المؤقت: عند الطلب التالي، تُستبعد الصفحة المتقادمة، وتُصيَّر من جديد وتُحفظ مرة أخرى.
الترجمات مشمولة أيضاً
يحفظ Odoo 19 النصوص المترجمة في السجل نفسه مع النص الأصلي (كحقل JSON). ولذلك، يُعد تغيير الترجمة بالنسبة لقاعدة البيانات تعديلاً عادياً في الصف – ويرصده المُشغّل تلقائياً. وينطبق ذلك بالقدر نفسه على التعديل عبر الواجهة، وعمليات الاستيراد، والواجهات البرمجية، والبرمجيات النصية التي تكتب مباشرة في قاعدة البيانات. وبناءً عليه، فإن الترجمة التلقائية لـ 46 لغة لا تُبطل إلا صلاحية الصفحات التي تغير نصها تحديداً، دون غيرها.
- تحديث دقيق بدلاً من الإلغاء الشامل: يؤدي تعديل منتج إلى إبطال صلاحية صفحاته، والقوائم التي يظهر فيها، والفئة التابع لها؛ بينما يظل باقي المحتوى في الذاكرة المؤقتة.
- التغييرات الشاملة (القوالب، والأصول، واللغات، والقوائم، والضرائب، والعملات) تُبطل صلاحية كل شيء دفعة واحدة، لأنها قد تؤثر في كل صفحة.
- استثناء العدادات: يتغير عداد زيارات مقالات المدونة مع كل قراءة؛ وهو عن قصد لا يتسبب في إبطال الصلاحية، وإلا لأصبح التخزين المؤقت عديم الجدوى للمقالات الشائعة.
- شبكة أمان: يتوفر بالإضافة إلى ذلك حد أقصى لعمر كل صفحة (افتراضياً 12 ساعة).
- عدم تعطل عمليات الحفظ بسبب الذاكرة المؤقتة: يُسجَّل أي خطأ يحدث داخل أحد المُشغّلات كتحذير، ولا يؤدي إلى فشل عملية الحفظ الفعلية.
لوحة التحكم والإحصاءات
كل ما تحتاجه للتشغيل متوفر في مكان واحد: في أودو تحت الموقع الإلكتروني ← التقارير ← التخزين المؤقت للصفحات. يمثل قسم نظرة عامة لوحة التحكم (المتضمنة للإعدادات)، بينما يعرض قسم السجل الزمني الأرقام الخاصة بكل يوم وموقع إلكتروني.
لقطة شاشة من نظام اختبار يضم نسخاً من مواقعنا الإلكترونية؛ استُبدلت أسماء المواقع بعناصر نائبة.
الإعدادات
| الإعداد | المعنى |
|---|---|
| مفعّل | المفتاح الرئيسي. عند إيقاف تشغيله، يعود أودو لتقديم كل صفحة كالسابق، في جميع العمليات بعد 30 ثانية كحد أقصى. |
| موقع التخزين | تلقائي، أو ملفات، أو الذاكرة العشوائية |
| الحد الأقصى للعمر (ساعات) | شبكة أمان؛ تُجدد الصفحات بعد انقضاء هذه المدة بصرف النظر عن حدوث تغييرات |
| ميزانية RAM (ميغابايت) | الحد الأقصى للذاكرة العشوائية التي يجوز للتخزين المؤقت في RAM استهلاكها؛ وهو في الوقت نفسه الحد الفاصل لتقييم "يتسع" |
| الحد الأقصى للقرص (ميغابايت) | الحد الأقصى لحجم التخزين المؤقت في ملفات؛ وتُزال القيود الأقدم أولاً |
الحالة والإحصاءات
تُبيّن الحالة موقع التخزين النشط مع حده الأقصى، وعدد الصفحات المخزنة مؤقتاً وحجمها، بالإضافة إلى تتبع التغييرات: كم تغييراً تم تسجيله في آخر 24 ساعة وعدد الجداول الخاضعة للمراقبة. وإذا غابت المراقبة، تحذر لوحة التحكم بوضوح، إذ لا يجوز حينها الوثوق بالذاكرة المؤقتة. وتتيح الأزرار الموجودة في الأعلى تنفيذ الصيانة فوراً، أو إفراغ الذاكرة المؤقتة، أو فحص المُشغّلات وإعادة إنشائها عند الحاجة.
تتضمن الإحصاءات (اليوم، 7 أيام، 30 يوماً):
- من الذاكرة المؤقتة والمُصيَّرة: الإصابات الناجحة والإخفاقات، ومنها تُحسب نسبة الإصابة
- المُزالة (المُعدّلة/المنتهية الصلاحية): كم صفحة تم استبعادها بسبب التعديل أو انتهاء الصلاحية
- وقت التصيير ووقت الذاكرة المؤقتة: مقارنة بين متوسط كل منهما لكل صفحة
- الوقت التقديري الموفَّر من زمن تشغيل الخادم وحجم البيانات المُقدَّمة من الذاكرة المؤقتة
تجمع كل عملية تشغيل هذه الأرقام بصورة مستقلة وتكتبها مرة كل دقيقة؛ بينما تتولى مهمة الصيانة حذف الصفوف التي يتجاوز عمرها 90 يوماً.
السجل الزمني كرسم بياني وجدول محوري وقائمة
تتوفر القيم اليومية لكل موقع إلكتروني تحت السجل الزمني – كرسم بياني أو جدول محوري أو قائمة. يتيح لك ذلك معرفة ما إذا كانت نسبة الإصابة ترتفع مجدداً بعد إعادة التشغيل أو بعد إجراء تعديل كبير، وكذلك تحديد الموقع الذي يتلقى أكبر قدر من الزيارات عبر الذاكرة المؤقتة.
الأمان: ما لا يُجلب أبداً من الذاكرة المؤقتة
يجب ألا يؤدي التخزين المؤقت للصفحات إطلاقاً إلى اطلاع شخص على محتوى يخص شخصاً آخر. لذلك تتبع هذه الوحدة مبدأ: عند الشك، لا تخزّن مؤقتاً.
- للزوار المجهولين فقط: كل من يسجل دخوله أو يمتلك سلة تسوق أو يحمل حالة جلسة أخرى، يحصل دائماً على الصفحة المصيرة بالطريقة المعتادة.
- طلبات
GETفقط دون معلمات بحث: تظل عمليات البحث، والتصفيات، والفرز، والنماذج، وسلة التسوق، وصفحة الدفع دون أي مساس. - حالة الاستجابة 200 وتنسيق HTML فقط: لا يتم حفظ صفحات الأخطاء ولا عمليات إعادة التوجيه ولا الملفات.
- لا معرّفات جلسات في الذاكرة المؤقتة: أي صفحة تتضمن معرف جلسة أو تضبط ملف تعريف ارتباط لا تُحفظ (وتُسجَّل كتحذير).
- رمز CSRF لكل طلب: يُعد الرمز في الصفحة المخزنة مؤقتاً عنصراً نائباً، ويتم إدراجه وتجديده مع كل عملية تقديم.
- مفتاح دقيق: يشمل مفتاح التخزين المؤقت الموقع الإلكتروني، واللغة، وقائمة الأسعار، والموقف الضريبي، وحالة الموافقة على ملفات تعريف الارتباط؛ ومن يرى محتوى مختلفاً يُخصص له قيد مختلف.
- قواعد بيانات متعددة: تمتلك كل قاعدة بيانات قيوداً خاصة بها، وسجل تغييرات خاصاً، وإحصاءات مستقلة.
- لا تسريب للبيانات: يُحفظ التخزين المؤقت محلياً على الخادم (في ملف أو في ذاكرة RAM). ولا يتم نقل أي بيانات إلى أطراف خارجية.
محركات البحث ومفهرسات الذكاء الاصطناعي: لا حظر لأي منها
يتعامل بعض المشغّلين مع عبء برامج الزحف باللجوء إلى الحظر. يحمي هذا الإجراء الخادم، ولكنه يضر بظهور الموقع. أما هذه الوحدة البرمجية فتتبع مساراً معاكساً:
- محتوى متطابق للجميع: تتلقى محركات البحث، وبرامج فهرسة الذكاء الاصطناعي، والزوار الصفحة ذاتها. ولا توجد نسخة مخصصة لبرامج الزحف ولا تمييز بناءً على معرّف المتصفح.
- الاستجابات الأسرع تفيد الفهرسة: فالصفحة التي تستجيب في 20 مللي ثانية بدلاً من 500 تستهلك قدراً أقل من ميزانية الزحف، مما يتيح لبرامج الزحف فهرسة صفحات أكثر في المدة نفسها.
- محتوى محدّث باستمرار: نظراً لأن التغييرات تُبطل صلاحية الصفحات فوراً، فلن تشاهد برامج الزحف أبداً نسخة قديمة – وهو أمر مهم عند إدارة المحتوى لمحركات البحث وإجابات الذكاء الاصطناعي.
- الحفاظ على البيانات المنظمة: تظل بيانات JSON-LD، والبيانات الوصفية (Meta)، وإشارات
hreflangجزءاً من الصفحة المخزنة مؤقتاً؛ بينما لا يمس التخزين المؤقت خرائط المواقع والملفات.
إذا كنت ترغب بالإضافة إلى ذلك في الحد من الحمل، فهذا قرار منفصل يمكنك اتخاذه عن دراية؛ ولا تفرضه عليك هذه الوحدة.
التثبيت والإعدادات
- الحصول على الوحدة: تنزيل الشفرة المصدرية من GitHub ووضعها في أحد مسارات الإضافات (Addons) الخاصة بتثبيت Odoo 19 لديك: github.com/Alex0176/odoo-website-page-cache
- التثبيت:
odoo-bin -d <Datenbank> -i website_page_cache --stop-after-init. ينشئ هذا الأمر سجل التغييرات والمُشغّلات ومهمة الصيانة (كل 10 دقائق). - إعادة تشغيل الخدمة، لتتمكن كافة عمليات التشغيل من تحميل الوحدة.
- فتح لوحة التحكم: الموقع الإلكتروني ← التقارير ← التخزين المؤقت للصفحات. تأكد من اكتمال تتبع التغييرات، وحدد موقع التخزين (الإعداد الافتراضي: تلقائي).
- التحقق: اطلب صفحة متجر أو مدونة مرتين وتفقّد ترويسة
X-Page-Cache: في المرة الأولى ستكونMISS، وبعدهاHIT.
تتوفر الإعدادات كمعلمات نظام (website_page_cache.enabled، و.backend، و.ttl_hours، و.max_mb_file، و.max_mb_ram) وتتم إدارتها عادةً في لوحة التحكم. الوحدة مترجمة إلى الألمانية. ويؤدي إلغاء التثبيت إلى إزالة المُشغّلات وسجل التغييرات وجميع الصفحات المخزنة مؤقتاً بالكامل مجدداً.
Tipp für den RAM-Cache: Das RAM-Budget im Dashboard und die Größe des tmpfs (/dev/shm, Mount-Option size=) müssen zum Bedarf passen. Beides nennt Ihnen die Prüfung „Passt es in den Arbeitsspeicher?“ mit konkreten Werten.
حدود ينبغي لك معرفتها
- Kurze Verzögerung nach Änderungen: Der Index des Änderungsjournals wird alle zwei Sekunden aufgefrischt. Eine geänderte Seite kann bis dahin noch in alter Fassung ausgeliefert werden.
- Lagerabhängige Texte werden über Bestandsänderungen und das Höchstalter aktualisiert.
- Schätzung des Platzbedarfs: Zusätzliche Fassungen je Preisliste oder Land sind nicht eingerechnet; etwas Reserve einplanen.
- Kein Ersatz für alles: Der Cache entlastet Anfragen, die er bedienen darf. Angemeldete Benutzer, Suchen und Formulare laufen weiterhin durch Odoo.
- Erster Abruf bleibt langsam: Nach einem Neustart des Servers (RAM) oder einer globalen Änderung wird jede Seite einmal normal gerendert, ehe sie im Cache liegt.
الأسئلة الشائعة
Was ist der Seitencache für Odoo?
Ein Open-Source-Modul (website_page_cache, Odoo 19, LGPL-3), das öffentliche Shop- und Blogseiten für anonyme Besucher aus einem Cache ausliefert, statt sie bei jedem Aufruf neu zu rendern. Der Cache liegt wahlweise in Dateien oder im Arbeitsspeicher.
Sperrt das Modul Suchmaschinen oder KI-Crawler?
Nein. Suchmaschinen und KI-Indexer erhalten dieselben Seiten wie jeder andere Besucher, nur schneller. Es gibt keine Sperre, keine Drosselung und keine eigene Crawler-Fassung.
Werden geänderte Seiten und Übersetzungen automatisch neu gecacht?
Ja. PostgreSQL-Trigger melden jede Änderung relevanter Tabellen an ein Journal; betroffene Seiten werden verworfen und beim nächsten Aufruf neu gerendert und gespeichert. Übersetzungen sind abgedeckt, weil Odoo 19 sie im selben Datensatz speichert.
Soll ich Datei oder RAM wählen?
In der Regel Automatisch: Das Modul nutzt den RAM, solange alle Seiten hineinpassen, und weicht sonst auf Dateien aus. Dateien eignen sich, wenn der Cache Neustarts überleben soll oder der RAM knapp ist; der RAM ist die schnellste Variante.
Wie erfahre ich, ob meine Webseite in den Arbeitsspeicher passt?
Im Dashboard unter Website → Berichte → Seitencache. Der Abschnitt „Passt es in den Arbeitsspeicher?“ zählt die Seiten je Webseite und Sprache, misst die Seitengröße und vergleicht den Bedarf mit RAM-Budget, tmpfs-Größe und verfügbarem Speicher.
Wie viel zusätzlicher RAM wird für einen RAM-Cache benötigt?
Das Dashboard nennt es als eigene Zeile. Gerechnet wird: Bedarf = Seiten × Seitengröße; mit Sicherheitsreserve durch 0,8 geteilt. Weil der Cache höchstens die Hälfte des verfügbaren Speichers nutzen darf, ist das Doppelte davon der frei benötigte Speicher; die Differenz ist der zusätzliche RAM. Ist nur das RAM-Budget oder das tmpfs zu klein, nennt das Dashboard die Einstellung samt Zielwert.
Kann der Cache jemandem fremde Inhalte zeigen?
Nein. Gecacht wird nur für anonyme GET-Abrufe ohne Suchparameter. Angemeldete Benutzer, Warenkörbe, Formulare und Suchen kommen nie aus dem Cache; Sprache, Preisliste, Steuerposition und Cookie-Zustimmung sind Teil des Schlüssels.
Wie schalte ich den Cache im Notfall ab?
Im Dashboard den Schalter „Aktiv“ ausschalten oder den Systemparameter website_page_cache.enabled auf 0 setzen. Das gilt in allen Arbeitsprozessen nach spätestens 30 Sekunden. Eine Deinstallation entfernt außerdem Trigger, Journal und gecachte Seiten.
Woran erkenne ich, ob eine Seite aus dem Cache kam?
Am Antwort-Header X-Page-Cache: HIT bedeutet aus dem Cache, MISS bedeutet frisch gerendert und gespeichert.
الدعم من Biricon IT Services
Ihre Odoo-Webseite reagiert bei Crawler-Last träge, oder Sie möchten Shop und Blog schneller und sichtbarer machen? Wir unterstützen bei der Analyse der Last, bei der Einrichtung des Seitencaches, bei der Dimensionierung von Arbeitsspeicher und Arbeitsprozessen und bei der mehrsprachigen Suchmaschinenoptimierung Ihrer Odoo-Webseite. Den Quellcode des Moduls finden Sie auf GitHub.
Stand: 10. November 2026. Messwerte stammen aus einem Testsystem mit Beispieldaten und sind keine Zusage für andere Installationen.