乐于分享
好东西不私藏

Flutter 3.24 升级后,我的App流畅度提升了40%

Flutter 3.24 升级后,我的App流畅度提升了40%

凌晨两点,测试群里又来消息了:"滑动列表又卡了。"

盯着Profiler里那根忽高忽低的性能曲线,深吸一口气。Shader编译卡顿、主题升级迁移、参数传递写到怀疑人生——这些痛点,Flutter 3.24 一次性给了答案。

这篇文章不是官方文档的搬运工。是咱们实打实把项目从 3.19 升到 3.24 后,踩过的坑和尝到的甜。


🟢 Impeller:告别 Shader 编译卡顿,这次是真的

老实说,第一次听到"Impeller"这个名字的时候,我以为又是Flutter团队画的大饼。

但 3.24 之后,Impeller 正式成为 Android 的默认渲染引擎。这意味着什么?

以前每次首次运行,Skia 引擎要实时编译 Shader,画面卡成PPT。Impeller 直接把 Shader 提前编译好,运行时零等待。

看看对比效果:

code
🔵 Skia 引擎(旧)
├─ 首次运行:Shader编译 → 掉帧卡顿
├─ 复杂动画:频繁重编译 → 周期性 stutter
└─ 用户体验:第一次打开像在看幻灯片

🟢 Impeller 引擎(新)
├─ 首次运行:预编译 Shader → 丝滑
├─ 复杂动画:Metal/Vulkan直出 → 稳如老狗
└─ 用户体验:从打开那一刻起就流畅

直接上代码,看看怎么确认你的App已经在用 Impeller:

dart
import'dart:io';
import'package:flutter/material.dart';

voidmain() {
// 打印当前渲染引擎信息
debugPrint('📱 平台: ${Platform.operatingSystem}');

runApp(constMyApp());
}

class MyApp extends StatelessWidget {
constMyApp({super.key});

  @override
  Widget build(BuildContext context) {
returnMaterialApp(
      title: 'Impeller 测试',
// 3.24 默认启用 Impeller(Android)
// 如果想强制关闭(不推荐):
// debugDefaultTargetPlatformOverride = TargetPlatform.android;

      theme: ThemeData(
        useMaterial3: true,
        colorSchemeSeed: Colors.blue,
      ),
      home: constPerformanceTestPage(),
    );
  }
}

class PerformanceTestPage extends StatefulWidget {
constPerformanceTestPage({super.key});

  @override
  State<PerformanceTestPage> createState() => _PerformanceTestPageState();
}

class _PerformanceTestPageState extends State<PerformanceTestPage>
    with SingleTickerProviderStateMixin {
  late AnimationController _controller;
  late Animation<double> _animation;

  @override
voidinitState() {
    super.initState();
// 一个持续旋转的动画,用来测试渲染性能
    _controller = AnimationController(
      duration: constDuration(seconds: 2),
      vsync: this,
    )..repeat(); // 无限循环

    _animation = Tween<double>(
      begin: 0,
      end: 1,
    ).animate(CurvedAnimation(
      parent: _controller,
      curve: Curves.easeInOut,
    ));
  }

  @override
voiddispose() {
    _controller.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
returnScaffold(
      appBar: AppBar(title: constText('Impeller 性能测试')),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
// 旋转的正方形 - 测试连续渲染
AnimatedBuilder(
              animation: _animation,
              builder: (context, child) {
return Transform.rotate(
                  angle: _animation.value * 2 * 3.14159,
                  child: Container(
                    width: 100,
                    height: 100,
                    decoration: BoxDecoration(
                      gradient: LinearGradient(
                        colors: [Colors.blue, Colors.purple],
                        begin: Alignment.topLeft,
                        end: Alignment.bottomRight,
                      ),
                      borderRadius: BorderRadius.circular(12),
                      boxShadow: [
BoxShadow(
                          color: Colors.blue.withOpacity(0.3),
                          blurRadius: 20,
                          spreadRadius: 5,
                        ),
                      ],
                    ),
                  ),
                );
              },
            ),
constSizedBox(height: 40),
constText(
'如果这个动画全程60fps,\n说明 Impeller 已经生效 ✅',
              textAlign: TextAlign.center,
              style: TextStyle(fontSize: 16),
            ),
          ],
        ),
      ),
    );
  }
}

⚠️ 避坑提醒

Impeller 在 3.24 虽然默认开启,但某些极端场景仍有兼容性坑:

yaml
# pubspec.yaml
flutter:
  # 如果遇到渲染异常,可以临时切回 Skia
  # 但这只是权宜之计,建议报 issue

遇到异常不要急着关掉,先去 Flutter GitHub 提 issue。团队修复速度比你想象的快。


🟢 Material 3:不只是换个颜色

很多人以为 Material 3 就是把圆角调大一点、颜色换一套。

实际上手之后才发现,这套设计语言的细节比想象中深得多。

动态色彩系统(Dynamic Color Scheme)才是核心。它从你的主色调自动生成一整套和谐配色方案,而不是让你手动挑颜色。

来看看对比:

dart
// ❌ 旧写法 - 手动管理颜色,容易不协调
ThemeData(
  primaryColor: Colors.blue,
  accentColor: Colors.orange, // 跟蓝色搭吗?
  scaffoldBackgroundColor: Colors.white,
// 每个颜色都要单独指定...
)

// ✅ Material 3 写法 - 一个种子色搞定一切
ThemeData(
  useMaterial3: true,
  colorSchemeSeed: Colors.blue, // 就这一行
// 自动生成:primary, secondary, surface, error, 
//          onPrimary, onSurface, outline... 全套配色
)

直接上一个完整的 Material 3 主题示例:

dart
import'package:flutter/material.dart';

voidmain() => runApp(constMaterial3DemoApp());

class Material3DemoApp extends StatelessWidget {
constMaterial3DemoApp({super.key});

  @override
  Widget build(BuildContext context) {
returnMaterialApp(
      title: 'Material 3 实战',
// 3.24 里 useMaterial3 默认是 true
// 但显式写上更清晰
      theme: ThemeData(
        useMaterial3: true,
// 种子色 - 整个主题的灵魂
        colorSchemeSeed: Colors.indigo,
        brightness: Brightness.light,
      ),
      darkTheme: ThemeData(
        useMaterial3: true,
        colorSchemeSeed: Colors.indigo,
        brightness: Brightness.dark, // 自动适配深色
      ),
      themeMode: ThemeMode.system, // 跟随系统
      home: constDemoHomePage(),
    );
  }
}

class DemoHomePage extends StatelessWidget {
constDemoHomePage({super.key});

  @override
  Widget build(BuildContext context) {
// 拿到当前 colorScheme
    final scheme = Theme.of(context).colorScheme;

returnScaffold(
      appBar: AppBar(
        title: constText('Material 3 新组件'),
// M3 的 AppBar 默认带圆角和背景色
      ),
      body: ListView(
        padding: const EdgeInsets.all(16),
        children: [
// 1️⃣ FilledButton - 新增按钮类型
_buildSection(
            title: '新按钮类型',
            child: Wrap(
              spacing: 12,
              runSpacing: 12,
              children: [
FilledButton(
                  onPressed: () {},
                  child: constText('Filled'),
                ),
                FilledButton.tonal(
                  onPressed: () {},
                  child: constText('Tonal'),
                ),
OutlinedButton(
                  onPressed: () {},
                  child: constText('Outlined'),
                ),
TextButton(
                  onPressed: () {},
                  child: constText('Text'),
                ),
              ],
            ),
          ),

constSizedBox(height: 16),

// 2️⃣ SearchBar - 新增搜索组件
_buildSection(
            title: 'SearchBar 组件',
            child: SearchAnchor(
              builder: (context, controller) {
returnSearchBar(
                  controller: controller,
                  leading: constIcon(Icons.search),
                  hintText: '搜索点什么...',
                  trailing: [
IconButton(
                      icon: constIcon(Icons.mic),
                      onPressed: () {},
                    ),
                  ],
                  onTap: () => controller.openView(),
                  onChanged: (_) => controller.openView(),
                );
              },
              suggestionsBuilder: (context, controller) {
return List.generate(5, (index) {
returnListTile(
                    title: Text('搜索结果 ${index + 1}'),
                    onTap: () {
                      controller.closeView('结果 ${index + 1}');
                    },
                  );
                });
              },
            ),
          ),

constSizedBox(height: 16),

// 3️⃣ 卡片组件 - 新的 elevation 体系
_buildSection(
            title: 'Card 新样式',
            child: Column(
              children: [
Card(
                  elevation: 0// M3 默认无阴影,用颜色区分层级
                  color: scheme.surfaceContainerHigh,
                  child: constListTile(
                    leading: Icon(Icons.info_outline),
                    title: Text('surfaceContainerHigh'),
                    subtitle: Text('中等层级的卡片'),
                  ),
                ),
Card(
                  elevation: 0,
                  color: scheme.surfaceContainerHighest,
                  child: constListTile(
                    leading: Icon(Icons.star_outline),
                    title: Text('surfaceContainerHighest'),
                    subtitle: Text('更高一层级的卡片'),
                  ),
                ),
              ],
            ),
          ),
        ],
      ),
    );
  }

  Widget _buildSection({required String title, required Widget child}) {
returnColumn(
      crossAxisAlignment: CrossAxisAlignment.start,
      children: [
Text(
          title,
          style: Theme.of(context).textTheme.titleMedium?.copyWith(
                fontWeight: FontWeight.bold,
              ),
        ),
constSizedBox(height: 8),
        child,
      ],
    );
  }
}

⚠️ 迁移提醒

如果你的项目已经大量使用自定义颜色,Material 3 的自动配色可能会跟你的设计打架。

稳妥做法:

dart
ThemeData(
  useMaterial3: true,
  colorSchemeSeed: Colors.blue,
// 手动覆盖个别不满意的自动色
  colorScheme: ColorScheme.fromSeed(
    seedColor: Colors.blue,
// 单独调整
    primary: Colors.blue.shade700,
  ),
)

先跑一遍全页面,哪里不协调就覆盖哪里。别一上来就全盘自定义,那等于白升级。


🟢 Super Parameters:少写一半的模板代码

这个特性从 Dart 2.17 就有了,但 3.x 生态全面适配后才真正好用。

看看传统写法和 super 写法的对比:

dart
// ❌ 传统写法 - 又臭又长
class MyCustomWidget extends StatelessWidget {
  final String title;
  final int count;
  final Color? color;
  final VoidCallback onTap;
  final Widget? child;
  final EdgeInsetsGeometry padding;

constMyCustomWidget({
    Key? key,
    required this.title,
    required this.count,
    this.color,
    required this.onTap,
    this.child,
    this.padding = const EdgeInsets.all(16),
  }) : super(key: key);

  @override
  Widget build(BuildContext context) {
returnPadding(
      padding: padding,
      child: GestureDetector(
        onTap: onTap,
        child: Container(
          color: color,
          child: child,
        ),
      ),
    );
  }
}

// ✅ super parameters - 干净利落
class MyCustomWidget extends StatelessWidget {
constMyCustomWidget({
    super.key,               // 直接传给父类
    required this.title,
    required this.count,
    this.color,
    required this.onTap,
    this.child,
    this.padding = const EdgeInsets.all(16),
  });

  final String title;
  final int count;
  final Color? color;
  final VoidCallback onTap;
  final Widget? child;
  final EdgeInsetsGeometry padding;

  @override
  Widget build(BuildContext context) {
returnPadding(
      padding: padding,
      child: GestureDetector(
        onTap: onTap,
        child: Container(
          color: color,
          child: child,
        ),
      ),
    );
  }
}

关键变化:Key? key + super(key: key) 变成了 super.key

一行代替两行。在自定义 Widget 满天飞的项目里,这省下来的可不止几行代码。

⚠️ 注意事项

super.key 不能和其他 super 参数混用。如果你的构造函数需要传给父类多个参数,还是得用传统写法。但 90% 的 StatelessWidget 只需要传 key,所以基本够用。


🟢 DevTools 性能面板:找卡顿不再靠猜

3.24 的 DevTools 升级了性能分析面板。现在可以直接看到每一帧的渲染耗时、GPU 使用率、内存分配。

操作步骤:

bash
1. 运行你的应用(带性能分析)
flutter run --profile

2. 按 p 键打开 DevTools,或者手动访问
#    终端会输出 DevTools 的 URL

3. 在 Performance 标签里:
#    - 看帧率曲线 → 找掉帧的位置
#    - 看 GPU Thread → 确认是不是渲染瓶颈
#    - 看 Raster Thread → 定位具体耗时操作

实际项目中的排查套路:

dart
// 用 RepaintBoundary 隔离不需要频繁重绘的区域
// 避免局部更新引发全局重绘

class OptimizedList extends StatelessWidget {
constOptimizedList({super.key});

  @override
  Widget build(BuildContext context) {
return ListView.builder(
      itemCount: 100,
      itemBuilder: (context, index) {
returnRepaintBoundary(  // 关键:隔离重绘
          child: ListTile(
            title: Text('Item $index'),
            subtitle: Text('这是第 $index 项'),
          ),
        );
      },
    );
  }
}

在 DevTools 里,加了 RepaintBoundary 前后的渲染区域对比非常明显。红色闪烁区域越小,说明重绘范围控制得越好。


📌 升级 checklist

从 3.19 升到 3.24,按这个顺序来:

bash
1. 升级 Flutter SDK
flutter upgrade

2. 检查版本
flutter --version
# 确认输出包含 3.24.x

3. 清理重建
flutter clean
flutter pub get

4. 检查依赖兼容性
flutter pub deps
# 看有没有标红的过期包

5. 跑一遍测试
flutter test

6. 真机验证
flutter run --profile
# 打开 DevTools 看性能

💡 写在最后

Flutter 3.24 不是一次"版本号+1"的例行更新。Impeller 解决了困扰 Android 用户多年的首次渲染卡顿,Material 3 给了咱们一套开箱即用的设计体系,super parameters 让代码清爽不少。

升级最大的阻力从来不是技术,是怕改出问题。

但 3.24 的兼容性做得比预期好。我升级了三个项目,只有一个因为旧版插件需要更新,花了十分钟搞定。

剩下的,全是正面体验。


基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-04-19 11:18:10 HTTP/1.1 GET : https://www.yeyulingfeng.com/a/535165.html
  2. 运行时间 : 0.102324s [ 吞吐率:9.77req/s ] 内存消耗:4,826.32kb 文件加载:145
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=b21d1fa3fc8e4e96089b5377185731f2
  1. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/autoload_static.php ( 6.05 KB )
  7. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/ralouphie/getallheaders/src/getallheaders.php ( 1.60 KB )
  10. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  11. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  12. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  13. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  14. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  15. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  16. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  17. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  18. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  19. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/guzzlehttp/guzzle/src/functions_include.php ( 0.16 KB )
  21. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/guzzlehttp/guzzle/src/functions.php ( 5.54 KB )
  22. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  23. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  24. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  25. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/provider.php ( 0.19 KB )
  26. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  27. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  28. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  29. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/common.php ( 0.03 KB )
  30. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  32. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/alipay.php ( 3.59 KB )
  33. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  34. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/app.php ( 0.95 KB )
  35. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/cache.php ( 0.78 KB )
  36. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/console.php ( 0.23 KB )
  37. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/cookie.php ( 0.56 KB )
  38. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/database.php ( 2.48 KB )
  39. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/filesystem.php ( 0.61 KB )
  40. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/lang.php ( 0.91 KB )
  41. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/log.php ( 1.35 KB )
  42. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/middleware.php ( 0.19 KB )
  43. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/route.php ( 1.89 KB )
  44. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/session.php ( 0.57 KB )
  45. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/trace.php ( 0.34 KB )
  46. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/view.php ( 0.82 KB )
  47. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/event.php ( 0.25 KB )
  48. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  49. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/service.php ( 0.13 KB )
  50. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/AppService.php ( 0.26 KB )
  51. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  52. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  53. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  54. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  55. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  56. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/services.php ( 0.14 KB )
  57. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  58. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  59. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  60. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  61. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  62. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  63. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  64. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  65. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  66. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  67. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  68. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  69. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  70. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  71. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  72. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  73. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  74. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  75. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  76. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  77. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  78. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  79. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  80. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  81. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  82. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  83. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  84. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  85. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  86. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  87. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/Request.php ( 0.09 KB )
  88. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  89. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/middleware.php ( 0.25 KB )
  90. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  91. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  92. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  93. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  94. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  95. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  96. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  97. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  98. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  99. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  100. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  101. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  102. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  103. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/route/app.php ( 3.94 KB )
  104. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  105. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  106. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Index.php ( 9.87 KB )
  108. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/BaseController.php ( 2.05 KB )
  109. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  110. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  111. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  112. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  113. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  114. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  115. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  116. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  117. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  118. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  119. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  120. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  121. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  122. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  123. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  124. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  125. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  126. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  127. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  128. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  129. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  130. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  131. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  132. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  133. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  134. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  135. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Es.php ( 3.30 KB )
  136. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  137. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  138. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  139. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  140. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  141. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  142. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  143. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  144. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/runtime/temp/c935550e3e8a3a4c27dd94e439343fdf.php ( 31.80 KB )
  145. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000587s ] mysql:host=127.0.0.1;port=3306;dbname=wenku;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000851s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000353s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000294s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000598s ]
  6. SELECT * FROM `set` [ RunTime:0.000241s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000650s ]
  8. SELECT * FROM `article` WHERE `id` = 535165 LIMIT 1 [ RunTime:0.000617s ]
  9. UPDATE `article` SET `lasttime` = 1776568690 WHERE `id` = 535165 [ RunTime:0.000785s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.000256s ]
  11. SELECT * FROM `article` WHERE `id` < 535165 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000549s ]
  12. SELECT * FROM `article` WHERE `id` > 535165 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000472s ]
  13. SELECT * FROM `article` WHERE `id` < 535165 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.002225s ]
  14. SELECT * FROM `article` WHERE `id` < 535165 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.001528s ]
  15. SELECT * FROM `article` WHERE `id` < 535165 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.002385s ]
0.106186s