# لوحة Kanban تعتمد على الخادم تتفوق في مقارنة لوحة PLANKA على الشبكات البطيئة

> يكشف اختبار أداء عن كيفية تفوق لوحة Kanban تعتمد على الخادم باستخدام Go و Datastar في مقارنة لوحة PLANKA المبنية بإطار React على اتصال هاتفي بطيء.

- Canonical URL: https://coreiten.com/article/مقارنة-لوحة-planka-تفوق-html-المعتمد-على-الخادم-على-تطبيقات-spa
- Language: ar
- Section: الريادة والمشاريع
- Author: Sami
- Published: 2026-10-12T00:02:27+03:00
- Modified: 2026-10-12T00:02:27+03:00
- Publisher: CoreITen (https://coreiten.com)
- Keywords: PLANKA, Go, SQLite, Datastar, React, Node.js, PostgreSQL, لوحة كانبان, تطبيق صفحة واحدة

## ملخص

أثبت اختبار أداء تفوقاً كبيراً للوحة Kanban مخصصة تعتمد على الخادم مقارنة بتطبيق PLANKA على الشبكات والبطء والأجهزة الضعيفة.

- بُنيت اللوحة المخصصة باستخدام ملف تنفيذي بلغة Go وقاعدة بيانات SQLite ومكتبة Datastar، بينما تعتمد PLANKA 2.2.1 على React و Node.js و PostgreSQL.
- أثناء التحميل البارد على هاتف بطيء، نقلت اللوحة المخصصة 58 كيلوبايت خلال 0.6 ثانية، مقارنة بـ 2.6 ميجابايت و 15.4 ثانية لتطبيق PLANKA.
- سجلت اللوحة المخصصة درجة أداء 98 في اختبارات Lighthouse على شبكة محمول بطيئة، بينما حصل PLANKA على 33 درجة فقط.
- استهلكت اللوحة المخصصة 4.4 ميجابايت من ذاكرة JavaScript مع 1,843 عنصراً في DOM، بينما استهلك PLANKA نحو 45.0 ميجابايت و 3,295 عنصراً.
- في وضع السكون، تعمل اللوحة المخصصة كملف بحجم 13.5 ميجابايت يستهلك 28 ميجابايت من الذاكرة، مقابل 673 ميجابايت و 200 ميجابايت لـ PLANKA.

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

---

أظهر اختبار أداء يقارن بين لوحة Kanban مخصصة تعتمد على الخادم وتطبيق الصفحة الواحدة الشهير PLANKA Community 2.2.1 تفوقاً كبيراً في السرعة لصالح تقنية HTML المعتمدة على الخادم عند استخدام اتصالات الشبكة البطيئة. وقيست اللوحة المخصصة، المبنية باستخدام ملف تنفيذي واحد بلغة Go وملف قاعدة بيانات SQLite ومكتبة Datastar في المتصفح، مقابل حزمة PLANKA التي تعتمد على React و Node.js و PostgreSQL. وفي مقارنة لوحة PLANKA هذه، استضاف كلا التطبيقين لوحات متطابقة، وقاس الاختبار تجربة مستخدم يعتمد على هاتف أُبطئ أداؤه مع تأخير في الشبكة يبلغ 150 مللي ثانية ذهاباً وإياباً.

### مقارنة بين التطبيقين

يدعم كلا التطبيقين ميزات Kanban الأساسية: تسجيل الدخول، وإدارة القوائم، وسحب البطاقات وإفلاتها، والتنقل باستخدام لوحة المفاتيح، وكتابة الوصف بتنسيق Markdown، والملصقات، ومواعيد الاستحقاق، والتعليقات، والتعاون المباشر. ويتضمن تطبيق PLANKA ميزات إضافية تفتقر إليها اللوحة المخصصة، مثل إضافة أعضاء للبطاقات، والبحث، والفلاتر، والمرفقات، وقوائم المهام، والحقول المخصصة، والإشعارات، وخطافات الويب (Webhooks)، وواجهة برمجة التطبيقات (REST API)، وتسجيل الدخول بالمصادقة الثنائية (2FA). وركزت الاختبارات فقط على القدرات المشتركة، رغم أن حجم حزمة PLANKA واستهلاكها للذاكرة يشملان مجموعة ميزاتها الكاملة.

### كيفية مزامنة اللوحة المعتمدة على الخادم

يُعد كل إجراء على اللوحة المخصصة طلب POST يُعدّل قاعدة البيانات ويُرجع استجابة `204` فارغة. وتدير عملية Goroutine واحدة اتصال الكتابة الوحيد، وتنفذ الأوامر المصطفة في معاملة واحدة. وتُعرض اللوحة كل 50 مللي ثانية كحد أقصى، ويُرسل الخادم كود HTML المُحدّث عبر تدفق مفتوح من الأحداث المرسلة من الخادم إلى كل صفحة متصلة. ثم تدمج مكتبة Datastar كود HTML الجديد في المستند.

وللتعامل مع الحالات المعلقة، تبقى البطاقة المُفلتة في المكان الذي وضعها فيه الخادم آخر مرة، وتظهر باهتة مع مؤشر تحميل حتى يصل الإطار الجديد. وتعرض اللوحة أيضاً نسخة متقطعة الخطوط من البطاقة في الموقع الجديد للإشارة إلى إجراء المستخدم. وإذا رفض الخادم النقل، تبقى البطاقة في موضعها الأصلي، وتعرض الصفحة رسالة توضح السبب، مثل «نقلت Anna بطاقة 'Fix login' إلى 'Done' في هذه الأثناء».

### إعدادات القياس

عمل كلا التطبيقين وقاعدة البيانات والمتصفح على جهاز واحد بمعالج Intel i5-13500. واحتوت لوحة الاختبار على 8 قوائم و 200 بطاقة و 268 تعليقاً. وأضاف خادم وكيل TCP تأخيراً قدره 150 مللي ثانية ذهاباً وإياباً، وحدد النطاق الترددي عند 1.6 ميجابت/ثانية للتنزيل و 750 كيلوبت/ثانية للرفع. وخفّض متصفح Chrome أداء وحدة المعالجة المركزية للمستخدم الخاضع للقياس بأربع مرات لمحاكاة هاتف بطيء، بينما عرض مستخدم ثانٍ اللوحة على وحدة معالجة مركزية عادية. وخضع كل تطبيق لثلاث جولات تضمنت 20 عملية نقل بالسحب باستخدام الماوس.

### تحميل اللوحة ونتائج Lighthouse

أثناء التحميل البارد على الهاتف البطيء، نقلت اللوحة المخصصة 58 كيلوبايت من البيانات وعرضت اللوحة على الشاشة خلال 0.6 ثانية. ونقل تطبيق PLANKA نحو 2.6 ميجابايت واستغرق 15.4 ثانية لعرض لوحته. ويُنزّل PLANKA تطبيقه بالكامل قبل طلب بيانات اللوحة، بينما يُرسل الخادم المخصص اللوحة بتنسيق HTML في الاستجابة الأولية.

وفي اختبارات Lighthouse التي تحاكي شبكة هاتف محمول بطيئة، حققت اللوحة المخصصة درجة أداء بلغت 98، مع ظهور أول رسم للمحتوى خلال 1.4 ثانية و 160 مللي ثانية من إجمالي وقت الحظر. وسجل PLANKA نحو 33 درجة على الهاتف المحمول، مع ظهور أول رسم للمحتوى خلال 14.0 ثانية و 990 مللي ثانية من إجمالي وقت الحظر. وعلى أجهزة سطح المكتب، سجلت اللوحة المخصصة 100 درجة، بينما سجل PLANKA نحو 69 درجة.

### نقل البطاقات وإضافة التعليقات

عند سحب بطاقة قائمة واحدة إلى اليمين، أظهرت اللوحة المخصصة البطاقة في قائمتها الجديدة بعد 252 مللي ثانية، مع وصول تأكيد الخادم عند 253 مللي ثانية. وعرض PLANKA البطاقة في القائمة الجديدة بعد 481 مللي ثانية، في نهاية حركة الإفلات، وتلقى تأكيد الخادم بعد 712 مللي ثانية. ورأى مستخدم ثانٍ عملية النقل بعد 199 مللي ثانية على اللوحة المخصصة، مقارنة بنحو 656 مللي ثانية على PLANKA.

وأثبت PLANKA أنه أسرع في إضافة التعليقات. إذ عرض التعليق الجديد فوراً وتلقى تأكيد الخادم بعد 229 مللي ثانية. وتطلبت اللوحة المخصصة طلب HTTP وعرضت التعليق مع الإطار التالي بعد 302 مللي ثانية.

### الاستجابة والذاكرة في المتصفح

بعد الجلسة، سجلت اللوحة المخصصة وقت استجابة للتفاعل التالي (INP) بلغ 64 مللي ثانية، واستهلكت 4.4 ميجابايت من ذاكرة JavaScript، وتضمنت 1,843 عنصراً في نموذج كائن المستند (DOM). وسجل PLANKA وقت استجابة بلغ 256 مللي ثانية، واستهلك 45.0 ميجابايت من ذاكرة JavaScript، وتضمن 3,295 عنصراً. واستغرق فتح البطاقة 258 مللي ثانية على اللوحة المخصصة و 318 مللي ثانية على PLANKA.

### التعامل مع العديد من المستخدمين وعمليات الكتابة

حاكى اختبار التحميل 200 شخص ينقلون أربع بطاقات في الثانية لكل منهم، مما ولّد 790 عملية نقل في الثانية. واستخدم الخادم المخصص 4.9 نواة من وحدة المعالجة المركزية و 1.2 جيجابايت من الذاكرة، مع بلوغ الشريحة المئوية الخامسة والتسعين للطلبات المُجاب عليها 12 مللي ثانية. وذهب معظم وقت وحدة المعالجة المركزية لضغط إطارات HTML باستخدام Brotli لكل تدفق من التدفقات المئتين.

وبدون استخدام HTTP أو التدفقات، يعالج كاتب اللوحة المخصصة حوالي 13,800 عملية نقل في الثانية عندما ينقل 200 شخص البطاقات في وقت واحد. وتعمل قاعدة SQLite مع إعداد `synchronous=FULL`، مما يعني أن كل عملية حفظ تنتظر من 3 إلى 5 مللي ثانية للقرص على جهاز اختبار Linux.

### البصمة على الخادم

في وضع السكون، تعمل اللوحة المخصصة كملف تنفيذي واحد بحجم 13.5 ميجابايت يستهلك 28 ميجابايت من الذاكرة، ويشغل ملف SQLite نحو 143 كيلوبايت. ويُشغّل PLANKA نحو 18 عملية عبر حاويتين يبلغ إجمالي حجمهما 673 ميجابايت، ويستهلك 200 ميجابايت من الذاكرة، وتشغل قاعدة بيانات PostgreSQL الخاصة به 10.3 ميجابايت.

### التحسين للهواتف المحمولة

لجعل اللوحة المكونة من 200 بطاقة سريعة على الهاتف، تطبق اللوحة المخصصة ثلاثة تحسينات رئيسية. إذ تحمل الإطارات القوائم التي تغيرت فقط، بينما تُرسل القوائم غير المتغيرة كعناصر نائبة فارغة تتخطاها Datastar باستخدام `data-ignore-morph`. وتُعدّل الإطارات القوائم داخل مكون اللوحة بدلاً من عنصر المكون نفسه، مما يقلل وقت الإطار من 100 مللي ثانية إلى 55 مللي ثانية. بالإضافة إلى ذلك، تستخدم القوائم غير الظاهرة على الشاشة خاصية `content-visibility: auto` لمنع المتصفح من رسمها.

### القيود وظروف الاختبار

شغّل الاختبار كلا التطبيقين على نفس الجهاز مع المتصفح، مما يعني أن أياً منهما لم يواجه زمن انتقال حقيقي لمركز البيانات. وركزت المقارنة فقط على الميزات المشتركة، وتساهم قدرات PLANKA الإضافية في زيادة حجمه. واستخدم الاختبار إصدار PLANKA Community 2.2.1، بينما يتضمن الإصدار المدفوع PLANKA Pro 2.5.0 تحسينات غير مختبرة للوحات الكبيرة. وقِيست جميع عمليات النقل باستخدام الماوس، وقيّم اختبار التحميل اللوحة المخصصة فقط.

### كيفية اختبار اللوحة

تتوفر اللوحة المخصصة للاختبار على موقع kanban.zweiundeins.gmbh، مع إعادة تعيين اللوحات كل ليلة. وتتوفر الشيفرة البرمجية المصدرية ونصوص اختبار الأداء والبيانات الأولية على [GitHub](https://github.com/zweiundeins/kanban)، حيث يمكن للمطورين تشغيل اللوحة محلياً باستخدام أمر `go tool task dev`.

### متى تختار تطبيق الصفحة الواحدة أو HTML المعتمد على الخادم

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

## المصادر

- [lobste.rs](https://zweiundeins.gmbh/en/blog/spa-vs-hypermedia-a-collaborative-kanban-board-measured-against-planka)
