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

حسنًا، هذا مثير للاهتمام… إنه مفقود على 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 إعجابات