لماذا يتم تخزين oneboxes مؤقتًا في المشاركات؟

أحد الأشياء التي تزعجني قليلاً في Onebox هو أن محتوى Onebox يتم تخزينه مؤقتًا في المنشور ولا يتغير بتغيير الحقول حتى يتم تعديل المنشور.

على سبيل المثال، نقوم بإنشاء OneBox من حساب، وبعد أسبوع يغير المستخدم سيرته الذاتية…

إعادة تحميل Onebox في كل مرة يتم فيها عرض الصفحة ستبطئ الأمور بشكل كبير. سيكون من غير المنطقي إعادة تحميل Onebox الذي لم يتغير أبدًا. لا توجد طريقة لمعرفة ما إذا كان قد تغير، لذا فإن إجبار إعادة البناء بعد النشر (باستخدام مفتاح الربط أو عبر التعديل) هو الحل الأمثل. إذا كنت تعرف أن بعض الفئات قد تحتوي على Oneboxes ترغب في تحديثها بانتظام، فيمكنك إنشاء إضافة تقوم، على سبيل المثال، بإعادة معالجة جميع المواضيع في الفئة يوميًا.

6 إعجابات

بشكل عام، يتم تخزين Oneboxes مؤقتًا لأنك تريد تحديد معدل الزحف (scraping) للمواقع الخارجية محليًا لمنع حظر حسابك! (ولكن بالتأكيد، التخزين المؤقت له أيضًا فائدة في الأداء!) للتغلب على التخزين المؤقت في المناسبات النادرة التي تحتاج فيها إلى ذلك، ما عليك سوى إضافة سلسلة استعلام وهمية مثل:

?myname=isbill

أو شيء مشابه في نهاية الرابط.

سيؤدي ذلك إلى تحديث الصفحة.

7 إعجابات

يعد تخزين Onebox مؤقتًا أمرًا ضروريًا تمامًا للمحتوى الخارجي، ولا يُتوقع تحديثه. كنت أقصد Oneboxes الداخلية. كما ذكرت في المثال أعلاه، يُتوقع أن يتم تحديث Onebox الذي ينشئه المستخدم على جميع المواقع عن طريق تغيير سيرة الشخص.

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

في الوضع الحالي، إذا قام discourse بتحديث تنسيق Onebox (للحالات الداخلية)، فسيظل يُعرض في المنشورات القديمة بنفس النمط. سيتم حل هذه المشكلة إذا قمنا بتخزين محتوى Onebox بصيغة JSON في المنشور وتنسيقه بواسطة العميل.

3 إعجابات

أنا أقوم ببناء دعم Onebox في موقعي، وتعديل المنشور لا يحدث ذاكرة التخزين المؤقت لـ Onebox. كما أنني لا أرى خيارًا لـ “إعادة البناء بعد النشر” ضمن قائمة المفتاح الخاصة بي.

ومع ذلك، فإن إضافة سلسلة استعلام وهمية تعمل، ولكن إذا عدت إلى عنوان URL الأصلي، فإن النسخة المخزنة تظهر مرة أخرى.

هل هناك إعداد أو حيلة أغفلتها؟

إصداري هو: Discourse 2.5.5

كن حذرًا، فاستخدام شبكة توصيل المحتوى (CDN) كوسيط أمام الموقع وتفعيل طبقة التخزين المؤقت في الوسيط قد يتسبب في مشاكل. إذا كنت تستخدم شبكة توصيل المحتوى كوسيط (مثل Cloudflare)، فقم بإيقافها مرة واحدة وتحقق من المشكلة مرة أخرى.

أنا غير ملم بشبكات تسليم المحتوى (CDN) ولا أستخدم Cloudflare. أنا فقط أضيف بيانات الوصف og: إلى موقعي لتنفيذ OpenGraph وبالتالي Onebox.

نتيجة لذلك، أقوم بإجراء العديد من التغييرات في موقعي وأريد أن أرى كيف تظهر عند الإشارة إليها من Discourse.

ألاحظ أن تحرير منشور لا يتسبب في تحديث Onebox للرابط. إضافة ?x=1 إلى عنوان URL يفعل ذلك.

هل يجب أن يقوم Onebox بإعادة فحص عنوان URL المستهدف في كل مرة يتم فيها تحرير المنشور؟

لا أرى الكثير من الاهتمام بهذا الأمر… يبدو لي أنه خطأ برمجي. ما لم يكن هناك مربع اختيار للتحكم في تفعيل أو إيقاف تحديث Onebox؟

كمثال على نهج بديل، تتيح لك هذه الصفحة اختبار بيانات التعريف الخاصة بك لمعرفة ما ستحصل عليه، وهي أيضًا واجهة أمامية للذاكرة المؤقتة لفيسبوك.

من الغريب أن يبدو أن وسم OpenGraph الخاص بهم معطل! :slight_smile:

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

قد يكون هذا خيارًا جميلًا لهذه الأداة… ربما زر يظهر عند تمرير الماوس فوق عنوان URL موجود في الذاكرة المؤقتة؟

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

نحن نبحث أيضًا عن طريقة لتحديث الـ oneboxes، وفي حالتنا، نرغب في تحديث oneboxes للمواضيع الأخرى في منتدانا.

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

سيكون رائعًا لو توفّر إعداد لتحديث الـ oneboxes تلقائيًا إذا تطابقت نطاق موقعنا الإلكتروني و/أو تنتمي إلى الفئة التي ستحدث فيها هذه حالة الاستخدام (ويكي/توثيق).

4 إعجابات

بينما أقوم ببناء دعم OpenGraph على موقعي الرئيسي (المربوط بـ Discourse عبر SSO)، أواجه هذه المشكلة بشكل متزايد.

حيلة فعّالة حقًا هي أنني لم أعد أضع الرابط الفعلي فورًا، إن لم أقم بذلك أبدًا. بدلاً من ذلك، أستخدم الحيلة التي اقترحها @merefield أعلاه:

أضيف ?n=1 إلى نهاية كل رابط في المرة الأولى التي أشير إليه فيها. إذا بدت الصناديق الموحدة سيئة، يمكنني تحديث الصفحة ثم زيادة متغير N الخاص بي والتكرار حتى تبدو جيدة.

بمجرد انتهائي، سيحصل أي شخص يدرج الرابط فقط على النسخة النهائية من مسح الصفحة بدلاً من النسخة الأولى.

3 إعجابات