فهرست منبع

refactor(extension):优化扩展信息缓存逻辑

- 使用 cache->remember 方法替代原有的 cache->set 调用方式
- 确保扩展信息在缓存中不存在时才进行初始化
- 提高扩展列表获取的性能和缓存命中率
runphp 5 ماه پیش
والد
کامیت
27f5649c46
1فایلهای تغییر یافته به همراه5 افزوده شده و 2 حذف شده
  1. 5 2
      src/ExtensionManager.php

+ 5 - 2
src/ExtensionManager.php

@@ -20,6 +20,7 @@ use think\facade\Event;
 use think\facade\Log;
 use think\facade\Validate;
 use think\Service;
+use function SixShop\Core\extension_name_list;
 
 class ExtensionManager extends Service
 {
@@ -258,8 +259,10 @@ class ExtensionManager extends Service
 
     public function getExtensionList(): array
     {
-        foreach (Helper::extension_name_list() as $name) {
-            $this->app->cache->set(sprintf(ExtensionModel::EXTENSION_INFO_CACHE_KEY, $name), $this->initExtensionInfo($name));
+        foreach (extension_name_list() as $name) {
+            $this->extensionList[$name] = $this->app->cache->remember(sprintf(ExtensionModel::EXTENSION_INFO_CACHE_KEY, $name), function () use ($name) {
+                return $this->initExtensionInfo($name);
+            });
         }
         return $this->extensionList;
     }