صعوبة فهم إعداد تمكين لافتة الترحيب

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

حسنًا، هذا مثير للاهتمام… إنه مفقود على Foundation في موقعك مرة أخرى يا Moin، على الرغم من تمكينه في واجهة المسؤول. مسح ذاكرة التخزين المؤقت باستخدام SiteSetting.clear_cache!(expire_theme_site_setting_cache: true) لا يمسح ذاكرة التخزين المؤقت. أحصل على نتيجتين مختلفتين هنا:

discourse(prod)> SiteSetting.theme_site_settings_json_uncached(-1)
=> "{\"enable_welcome_banner\":true,\"search_experience\":\"search_field\"}"
discourse(prod)> SiteSetting.theme_site_settings_json(-1)
=> "{\"enable_welcome_banner\":false,\"search_experience\":\"search_field\"}"

ثم قمت بتشغيل هذا مباشرة:

Discourse.cache.delete(SiteSettingExtension.theme_site_settings_cache_key(-1))

ونجح الأمر؟؟ ثم قمت بتغيير الإعداد الخاص بك مرة أخرى في المسؤول، وذاكرة التخزين المؤقت مستمرة :thinking: أعتقد أن هناك شيئًا غريبًا يحدث مع theme_site_settings في الذاكرة هنا:

لأن هذا يعطي:

 -2=>{:enable_welcome_banner=>false, :search_experience=>"search_field"},
 -1=>{:enable_welcome_banner=>true, :search_experience=>"search_field"}}

بينما إذا قمت بجلب البيانات من قاعدة البيانات، أحصل على هذا، والذي يحتوي على القيمة false الصحيحة:

ThemeSiteSetting.where(theme_id: -1)
=>
[#<ThemeSiteSetting:0x00007f9164acb2d0 id: 3, theme_id: -1, name: "enable_welcome_banner", data_type: 5, value: "f", created_at: "2025-07-16 07:04:11.117747000 +0000", updated_at: "2025-08-11 06:35:07.606301000 +0000">,
 #<ThemeSiteSetting:0x00007f9164acb190 id: 13, theme_id: -1, name: "search_experience", data_type: 7, value: "search_field", created_at: "2025-07-16 07:04:11.117747000 +0000", updated_at: "2025-07-20 20:56:49.405228000 +0000">]
discourse(prod)> Theme.find(-1).themeable_site_settings
=>
[{:setting=>:enable_welcome_banner, :default=>true, :description=>"Display a banner on your main topic list pages to welcome members and allow them to search site content", :humanized_name=>"Enable welcome banner", :type=>"bool", :value=>false},
 {:setting=>:search_experience,
  :default=>"search_icon",
  :description=>"The default position and appearance of search on desktop devices",
  :humanized_name=>"Search experience",
  :type=>"enum",
  :valid_values=>[{:name=>"search.experience.search_field", :value=>"search_field"}, {:name=>"search.experience.search_icon", :value=>"search_icon"}],
  :translate_names=>true,
  :value=>"search_field"}]

نحن نعبث بهذا هنا:

وهنا:

والتي يتم استدعاؤها هنا:

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

تعديل: لاحظ أيضًا، ما زلت غير قادر على تكرار هذا في مكان آخر، ولكني قادر على تكراره بشكل موثوق على موقعك.

3 إعجابات

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

تتجاوز إعدادات الموقع الأخرى هذا عن طريق تحديث جميع الإعدادات عبر MessageBus كلما قام أي شخص بتغييرها:

سأحاول تقديم حل لهذه المشكلة غدًا (لقد انتهى وقت العمل لدي الآن)، شكرًا لصبرك يا معين!

4 إعجابات

تم دمج الإصلاح الآن، وقد استغرق الأمر وقتًا أطول لأنني كنت بحاجة إلى معرفة كيفية اختباره:

سأقوم بنشر موقعك قريبًا يا موين.

تعديل: تم نشر الإصلاح

4 إعجابات

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