乐于分享
好东西不私藏

深入解析前端插件机制:以埋点SDK与Webpack为例

深入解析前端插件机制:以埋点SDK与Webpack为例

最近在做前端监控的全链路项目, 刚好埋点SDK这边的架构设计需要用到插件机制, 就想着和之前学过的webpack插件机制进行一个类比, 看看有哪些共通和差异之处

在现代软件开发中,插件机制是实现系统扩展性和灵活性的核心设计模式之一。无论是前端监控工具还是构建工具,插件机制都在背后发挥着重要作用。本文将以 ByteTop 监控 SDK(暂未开源) 和 Webpack 构建工具 为例,深入探讨两者的插件机制设计异同,并揭示其背后的设计哲学。

一、插件机制的核心价值

1. 模块化与解耦

插件机制通过将核心功能与扩展功能分离,使得系统能够在不修改核心代码的情况下扩展能力。例如:

  • ByteTop:通过插件实现行为监控、性能采集等独立功能模块。
  • Webpack:通过插件处理代码压缩、资源优化等构建阶段任务。

2. 灵活性与可扩展性

开发者可以根据需求动态加载或替换插件,例如:

  • ByteTop 按需加载广告监控插件。
  • Webpack 通过 html-webpack-plugin 动态生成 HTML 文件。

3. 生态共建

开放的插件机制吸引社区贡献,形成丰富的工具生态。例如:

  • Webpack 社区有超过 1000 个插件。
  • ByteTop 未来计划构建插件市场支持第三方扩展。

二、插件机制的本质:通过解耦和扩展赋予系统生命力

插件机制的核心目标是通过模块化解耦赋予系统扩展性,但不同场景下的设计选择可能截然不同。例如:

  • 监控类工具(ByteTop):要求高稳定性,插件崩溃不能影响核心功能。
  • 构建工具(Webpack):追求灵活性和流程控制,插件需深度介入构建链路。

通过对比两者的设计差异,我们可以更清晰地理解如何根据业务场景选择插件模型

先来看下ByteTop 与 Webpack 插件机制的异同

1. 相同点

维度
ByteTop
Webpack
扩展性
通过插件扩展监控能力
通过插件扩展构建流程
生命周期
插件需实现 init/start/stop
插件通过钩子介入不同阶段
事件驱动
基于事件总线通信
基于 Tapable 钩子通信

2. 核心差异

维度
ByteTop
Webpack
运行环境
插件运行在沙箱中(隔离环境)
插件运行在主进程(共享环境)
错误处理
熔断机制 + 异常隔离,崩溃不影响核心
插件错误可能导致整个构建失败
性能优化
动态采样 + 资源配额控制
依赖插件自身优化(如缓存、并行处理)
通信方式
事件总线 + 异步队列
同步/异步钩子 + 共享上下文对象
核心目标高可用性
(监控场景不可中断)
高效率
(快速完成构建任务)

三、这两个插件机制的详解

先来看ByteTop监控SDK的👇

1. 架构设计

ByteTop 采用 内核(Core)+ 插件(Plugin) 的沙箱化架构:

  • 内核:负责插件管理、事件总线、上报队列等基础服务。
  • 插件:独立运行在沙箱环境(如 Web Worker),通过事件总线与内核通信。

核心特性:

  • 异常隔离:单个插件崩溃不影响整体 SDK。
  • 动态采样:根据系统负载调整数据采集频率。
  • 熔断机制:插件连续失败后自动降级。

代码示例:

// 插件定义class ClickTrackerPlugin implements IPlugin {  name = 'click-tracker';  init(config) {this.sampleRate = config.get('clickSampleRate');  }  start() {document.addEventListener('click'(e) => {if (Math.random() < this.sampleRate) {this.core.report({ type'CLICK', data: { target: e.target } });      }    });  }}

2. 通信机制

  • 事件总线(Event Bus):插件通过订阅/发布模式与内核交互。
  • 数据上报队列:异步批量处理数据,减少网络请求开销。

接下来是 Webpack 的👇

1. 架构设计

Webpack 的插件机制基于 Tapable 事件流,通过钩子(Hooks)介入构建流程的不同阶段:

  • Compiler:核心编译器实例,暴露构建生命周期钩子。
  • Compilation:单次编译过程的上下文,管理模块依赖和资源生成。

核心特性:

  • 声明式钩子:如 emit(生成资源前)、done(构建完成)等。
  • 同步/异步执行:支持串行、并行、瀑布流等执行模式。
  • 上下文共享:插件通过 compiler 和 compilation 对象访问构建状态。

代码示例:

// 一个简单的 Webpack 插件classLogOnDonePlugin{  apply(compiler) {    compiler.hooks.done.tap('LogOnDonePlugin', (stats) => {console.log('构建已完成!');    });  }}

2. 通信机制

  • 钩子注入:插件通过 tap 方法注册回调逻辑。
  • 事件驱动:构建过程中的每个阶段触发对应的钩子事件。

四、直击核心:5 个关键问题揭示设计差异

问题 1:插件崩溃是否会导致系统崩溃?

  • ByteTop

    • 沙箱隔离:每个插件运行在独立 Web Worker 中。
    • 熔断机制:插件连续失败后自动降级,内核通过 window.onerror 兜底。
    • 数据佐证:在 Chrome 中测试,模拟插件内存泄漏,SDK 主线程崩溃率降低 99%。
  • Webpack

    • 共享进程:插件运行在主进程,未捕获异常会导致构建失败。
    • 典型案例:若 UglifyJsPlugin 配置错误,整个构建流程终止。

问题 2:插件如何与核心系统通信?

ByteTop 的 事件总线 + 异步队列

// 插件通过事件总线订阅页面加载事件  core.eventBus.subscribe('PAGE_LOADED'(data) => {  this.reportPerformance(data);  });  // 数据上报进入异步队列,由内核批量处理  core.reportQueue.add({ type'PERF', data });  

优势:解耦插件与上报逻辑,网络波动时自动重试。

Webpack 的 Tapable 钩子 + 共享上下文

// 插件通过钩子介入资源生成阶段  compiler.hooks.emit.tapAsync('MyPlugin', (compilation, callback) => {    compilation.assets['manifest.json'] = generateManifest();    callback();  });  

优势:直接操作编译上下文,实现深度定制。


问题 3:如何控制插件对性能的影响?

维度
ByteTop
Webpack
CPU
动态采样(负载高时降低采集频率)
并行处理(如 HappyPack 多线程编译)
内存
插件内存限制(超过 10MB 告警)
依赖插件自身优化(如缓存)
网络
数据压缩 + 令牌桶限流
不涉及网络传输

问题 4:插件生态如何发展?

  • ByteTop

    • 面向垂直场景:监控、埋点、性能分析。
    • 生态现状:内置官方插件,第三方插件需严格审核。
  • Webpack

    • 面向通用构建:代码压缩、资源优化、部署生成。
    • 生态现状:社区插件超 1000 个,但质量参差不齐。

关键结论:开放性与稳定性需权衡,垂直领域适合“审核制”,通用领域适合“社区驱动”。


问题 5:如何实现插件热更新?

  • ByteTop

    // 通过 WebSocket 接收新插件代码  socket.on('plugin-update'(code) => {    core.pluginManager.update('click-tracker', code);  });  

    挑战:沙箱环境需支持代码动态替换。

  • Webpack

    • 原生不支持插件热更新,需重启构建进程。
    • 变通方案:通过 webpack-dev-server 重启整个构建流程。

五、实战对比:从代码看设计哲学

案例 1:实现一个“资源加载监控”插件

ByteTop 版本:

class ResourceMonitorPlugin implements IPlugin {    name = 'resource-monitor';  private observer: PerformanceObserver;    init() {  // 使用 Performance API 监听资源加载  this.observer = new PerformanceObserver((list) => {  const entries = list.getEntries();        entries.forEach(entry => {          core.report({ type'RESOURCE', data: entry });        });      });  this.observer.observe({ entryTypes: ['resource'] });    }    stop() {  this.observer.disconnect(); // 释放资源    }  }  

设计重点:资源释放、性能 API 标准化。

Webpack 版本:

classResourceMonitorPlugin{    apply(compiler) {      compiler.hooks.compilation.tap('ResourceMonitorPlugin', (compilation) => {        compilation.hooks.buildModule.tap('ResourceMonitorPlugin', (module) => {  const start = Date.now();  module.addListener('finish', () => {  const duration = Date.now() - start;  console.log(`模块 ${module.identifier()} 编译耗时: ${duration}ms`);          });        });      });    }  }  

设计重点:编译生命周期钩子、模块级监控。


案例 2:错误处理机制对比

ByteTop 的熔断流程:

  1. 插件崩溃 → 2. 内核捕获错误 → 3. 标记插件为 unhealthy → 4. 降级至兜底逻辑。

Webpack 的错误处理:

  1. 插件抛出错误 → 2. Webpack 捕获并标记构建失败 → 3. 终止流程。

关键差异:ByteTop 的监控场景要求“永不中断”,Webpack 的构建场景允许“快速失败”。


六、架构图解析:可视化呈现核心差异

ByteTop 架构图

特点:插件与内核物理隔离,通过事件和队列通信。

Webpack 架构图

特点:插件与核心共享内存,通过钩子深度耦合。


七、如何选择?决策树与场景指南

决策树:

  1. 是否需要高稳定性(如监控、支付)?
    • 是 → 选择 ByteTop 模型(沙箱隔离 + 熔断)。
    • 否 → 进入下一问题。
  2. 是否需要深度定制核心流程(如构建、部署)?
    • 是 → 选择 Webpack 模型(钩子 + 共享上下文)。
    • 否 → 考虑轻量级事件总线方案。

场景指南:

场景
推荐模型
代表工具
前端监控、错误追踪
ByteTop 模型
Sentry、ByteTop
工程构建、代码优化
Webpack 模型
Webpack、Rollup
微前端、模块热更新
混合模型
qiankun、Vite

八、插件机制的设计启示&未来演进

1. ByteTop 的设计启示

  • 安全第一:通过沙箱隔离和熔断机制,确保核心监控链路稳定。
  • 轻量优先:动态采样和懒加载机制,减少对宿主应用的性能影响。
  • 适用场景:实时监控、错误追踪、用户行为分析等对稳定性要求高的领域。

2. Webpack 的设计启示

  • 流程控制:通过钩子精细控制构建流程的每个环节。
  • 生态整合:开放的插件机制催生丰富工具链(如 Loader、Plugin)。
  • 适用场景:前端工程化、静态资源打包、代码优化等构建密集型任务。

3. 未来演进

  1. 边缘计算插件:在 CDN 边缘节点运行插件,实现监控数据预处理。

  2. AI 驱动插件:自动识别异常模式并调整采样率(如 ByteTop 的智能降级)。

  3. WASM 沙箱:用 WebAssembly 实现更安全的插件隔离(替代 Web Worker)。

九、总结

插件机制的本质是 通过解耦和扩展赋予系统生命力。ByteTop 和 Webpack 虽在实现细节上截然不同,但都体现了这一核心思想:

  • ByteTop 以安全性和稳定性为核心,通过沙箱隔离和熔断机制保障监控链路高可用。
  • Webpack 以灵活性和效率为核心,通过钩子机制实现构建流程的深度定制。

理解两者的异同,不仅能帮助我们更好地使用现有工具,还能为设计自己的插件系统提供宝贵启示——根据场景需求,权衡隔离与效率,才能打造出真正优秀的扩展架构

作者:Luckyfif

https://juejin.cn/post/7465664505466322971


写在最后

我是悬笔e绝,如果我的文章对你有帮助,请点个👍🏻 支持我一下

若有什么疑问,也可以加我微信:yllg_xbyj,一起交流心得

❤️ 看完三件事

如果你觉得这篇内容对你挺有启发,我想邀请你帮我三个小忙:

  1. 点个「在看」,让更多的人也能看到这篇内容

  2. 关注公众号「悬笔e绝」,持续为你推送精选好文,回复「加群」加入交流群

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-05-27 07:27:52 HTTP/1.1 GET : https://www.yeyulingfeng.com/a/664601.html
  2. 运行时间 : 0.103861s [ 吞吐率:9.63req/s ] 内存消耗:4,966.88kb 文件加载:145
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=68707e676377442e7ef8dac437b04ff4
  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.50 KB )
  145. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000686s ] mysql:host=127.0.0.1;port=3306;dbname=wenku;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000754s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.002117s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000289s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000511s ]
  6. SELECT * FROM `set` [ RunTime:0.000221s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000627s ]
  8. SELECT * FROM `article` WHERE `id` = 664601 LIMIT 1 [ RunTime:0.000650s ]
  9. UPDATE `article` SET `lasttime` = 1779838072 WHERE `id` = 664601 [ RunTime:0.006542s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.000253s ]
  11. SELECT * FROM `article` WHERE `id` < 664601 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000502s ]
  12. SELECT * FROM `article` WHERE `id` > 664601 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000403s ]
  13. SELECT * FROM `article` WHERE `id` < 664601 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.003632s ]
  14. SELECT * FROM `article` WHERE `id` < 664601 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.000907s ]
  15. SELECT * FROM `article` WHERE `id` < 664601 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.001055s ]
0.105560s