乐于分享
好东西不私藏

读 Next.js 源码:App Router、RSC 和缓存主链路

读 Next.js 源码:App Router、RSC 和缓存主链路

这一篇读的是 vercel/next.js。Next.js 很容易被写成框架百科:CLI、compiler、Turbopack、webpack loader、Pages Router、App Router、RSC、缓存、examples、测试全都扫一遍。这样读完通常只剩下目录名,真正遇到线上路由、RSC header、ISR 或 fetch cache 问题时,还是不知道该从哪里下手。

我更建议抓一条闭环主线:next build 先产出 manifests,生产 server 再读取这些 manifests 生成 matcher;请求进入 BaseServer 后先标准化 URL、识别 RSC/prefetch/header,并把 incremental cache 等上下文挂到 request meta;命中 app page 后进入 route module,再由 renderToHTMLOrFlight() 基于 loaderTree 生成 HTML 或 RSC Flight;最终 route response 和 render 内部的 fetch() 分别进入不同层次的缓存逻辑。

本文源码基线:本地目录 sources/next.js;分支 canary;提交 acb74eb551b72566217d39593e7f7fdb446d13e1;提交时间 2026-05-30 21:47:57 +0000;提交主题 [CLI] Exit non-zero with a clear message when next typegen fails (#94241)。根 package.json 声明 pnpm workspace,packages/next/package.json 声明 next = 16.3.0-canary.35

本文由 AI 辅助整理和改写,可能存在遗漏、理解偏差或版本差异。关键实现请以本文固定的提交、对应源码文件和官方文档为准,自行复核后再用于工程判断。

先看 build,因为运行时靠 manifest 工作

App Router 的生产运行时不是每次请求都去扫描 app/ 目录。packages/next/src/cli/next-build.tsnextBuild() 只是命令入口,真正的 build pipeline 在 packages/next/src/build/index.ts

这条链路里值得盯住几个产物:routes-manifest.jsonserver/pages-manifest.jsonserver/app-paths-manifest.jsonapp-path-routes-manifest.jsonprerender-manifest.json,以及 app page/app route 的 server bundle。handle-entrypoints.ts 也能看到 app page 和 app route entrypoint 会绑定 middleware manifest、build manifest、app paths manifest、action manifest、font manifest 等信息。

所以读 App Router,不能直接跳到 app-render.tsx。如果不知道 build 阶段写出了哪些 manifest,就解释不了生产环境里“某个 URL 为什么命中这个 route kind”“dynamic route 为什么按这个顺序匹配”“prerender/ISR 信息从哪里来”。

请求入口:BaseServer 先改造请求上下文

生产命令 next start 会进入 packages/next/src/cli/next-start.ts,再创建 server。custom server 的公开入口在 packages/next/src/server/next.tsgetRequestHandler() 会懒加载内部 request handler。真正的主线落在 packages/next/src/server/base-server.ts

BaseServer 构造期会读取 pagesManifestappPathsManifestappPathRoutes,通过 getRouteMatchers() 注册 pages、pages API、app page、app route 的 matcher provider,并触发 this.matchers.reload()。请求真正进来时,handleRequestImpl() 先等待 matcher ready,再解析 URL、修正 repeated slash、补齐 x-forwarded-*,然后调用 attachRequestMeta() 保留原始请求信息。

RSC 也在这一层进入主线。handleRSCRequest() 会识别 RSC、prefetch、segment prefetch 等 header;后面还会解析 pathname info、locale、basePath、matched path。接近请求前半段末尾时,BaseServer 会创建或取得 incrementalCache,挂到 request meta,并保留一个 globalThis.__incrementalCache 兼容 pages router 的 unstable_cache

这一步的意义很大:Next.js server request 不是简单的“URL 到 React 组件”。它先把 URL、RSC header、i18n、basePath、matched path、postponed state、incremental cache、server components HMR cache 等信息压进 request meta。后面的 route module 和 render pipeline 都在消费这些上下文。

Route Matcher:manifest 变成 static/dynamic 两组

App page matcher provider 在 route-matcher-providers/app-page-route-matcher-provider.ts,它从 APP_PATHS_MANIFEST 里筛出 app page route,并把 parallel routes 归并到同一个 pathname。App route matcher provider 在 app-route-route-matcher-provider.ts,对应 app/api/.../route.ts 这类 route handler。

合并器是 route-matcher-managers/default-route-matcher-manager.tsreload() 会收集所有 provider 的 matcher,检测重复 pathname,然后拆成 static 和 dynamic 两组。dynamic route 还会通过 getSortedRoutes() 排序,保证 [id][...slug] 这类路径不会靠遍历顺序碰运气。

真正匹配时,matchAll() 先尝试 static matcher;如果没有要求跳过 dynamic,再按排序后的 dynamic matcher 逐个 validate()。底层 route-matcher.ts 反而很小:dynamic route 用 getRouteRegex()getRouteMatcher() 提取 params,static route 做 pathname 相等判断。

这套结构解释了一个实用判断:如果你调试 Next.js 路由命中问题,不要先猜 React 组件加载错了。应该先看 manifest 里的 pathname、route kind、dynamic regex、params 提取,以及 static/dynamic 排序。

App Page:route module 把请求交给 RSC 渲染器

BaseServer.renderToResponseImpl() 进入渲染阶段,它会拿已有 match,或者调用 this.matchers.matchAll(pathname, options)。每个 match 会进入 renderPageComponent():这里会判断是否 app path,处理 parallel routes 的 root page,然后调用 findPageComponents() 加载 components 和 route module。

App page 的 route module 在 packages/next/src/server/route-modules/app-page/module.ts。它会处理 RSC URL normalization 和 request meta,核心 render() 再调用 renderToHTMLOrFlight(req, res, page, query, fallbackRouteParams, renderOpts, ...)

packages/next/src/server/app-render/app-render.tsx 是 App Router 渲染核心,但不要把它当孤立文件。renderToHTMLOrFlight() 会解析 request URL,从 request headers 里读 RSC、prefetch、nonce、revalidated tags,处理 postponed state 和 interpolated params,再创建 WorkStore,用 workAsyncStorage.run() 进入 renderToHTMLOrFlightImpl()

renderToHTMLOrFlightImpl() 里,几个动作串成了主干:安装 app bundle 的 module loading handlers;调用 ComponentMod.patchFetch() 把 render 内部 fetch 接到缓存体系;从 route module 的 userland 中取出 loaderTree;再根据 parsed request headers 判断 Flight router state、prefetch、RSC、HMR refresh、nonce。后面 generateDynamicRSCPayload()walkTreeWithFlightRouterState()createComponentTree() 才开始把 loaderTree 变成 Flight data、component tree 或 HTML stream。

换句话说,App Router 的页面渲染不是“找到 page.tsx 然后 render”。源码里真正的单位是 route module、loaderTree、request headers、WorkStore、AsyncLocalStorage 和 RSC Flight。

App Route:handler 执行前先建立动态性上下文

App Route 对应 app/api/.../route.ts,核心在 packages/next/src/server/route-modules/app-route/module.ts。这里绑定了 workUnitAsyncStorageworkAsyncStorageactionAsyncStorage 和 server hooks。

handle() 会先确保 userland 加载完成,再按 HTTP method 找 handler。执行用户代码之前,它会创建 static generation context、把 userland 的 fetchCache 放进 render options、创建 ActionStore、implicit tags、request store 和 WorkStore。随后根据 dynamic 配置处理 force-dynamicforce-staticerrorauto,必要时还会用 proxy request 跟踪 cookies、headers 等动态访问。

这段源码最适合拿来建立工程直觉:一个 route handler 是否能静态化,不只取决于文件位置。GET/POSTdynamicfetchCacherevalidate、是否读取 cookies/headers、是否触发动态访问,都会在 WorkStore/RequestStore 里合流。

Response Cache 和 fetch cache 是两回事

缓存是 Next.js 源码里最容易讲混的部分。页面和 app route 的响应缓存入口在 packages/next/src/server/route-modules/route-module.ts,它会懒创建 ResponseCache,再通过 handleResponse()responseCache.get(cacheKey, responseGenerator, context)

ResponseCache.get() 的主线是:没有 cache key 直接生成;minimal mode 可先查内存 LRU;正常模式进入 batcher,避免同 key 重复生成;再从 incremental cache 取旧值。如果旧值存在且不是 expired,fresh 会直接返回,stale 会先把旧值返回给请求,同时继续 revalidate。revalidate() 重新生成后,会把 response cache entry 转成 incremental response cache entry,再写回缓存。

IncrementalCache 更底层,既处理 route response,也处理 FETCH kind。它会选择 cache handler,读取 prerender manifest,维护 revalidateAfter、tag、lock、resume data cache、SharedCacheControls。patch-fetch.ts 则把 globalThis.fetch 替换成 patched fetch:判断是否可缓存,生成 fetch cache key,按 IncrementalCacheKind.FETCH 查缓存;stale 命中时,非 static generation 可以先返回旧数据并安排后台刷新,static generation 则走前台 revalidate。

因此要把两个概念分开:route response cache 关心页面或 route handler 的响应,fetch cache 关心 render 期间的单个 fetch 请求。它们都接到 incremental cache,但 kind、key、生命周期和写入时机不同。

最后的判断:Next.js 的核心价值在运行时协议

读完这条链路,我对 Next.js 源码的判断是:它最值得学习的不是“React 框架如何组织目录”,而是一个现代全栈框架如何把 build artifact、路由匹配、RSC 协议、用户代码执行上下文和多层缓存连成一个运行时协议。

App Router 的主链路可以压缩成一句话:next build 写出 manifests;BaseServer 读取 manifests 创建 matcher,并在请求入口准备 request meta;Route Matcher 给出 route kind 和 params;App Page 通过 route module 进入 renderToHTMLOrFlight(),基于 loaderTree 输出 HTML 或 RSC Flight;App Route 在 WorkStore/RequestStore 中执行 handler;Response Cache 管 route 响应,patchFetch() 把 render 内部 fetch 接入 fetch cache、tags 和 revalidate。

如果继续读 Next.js,我会优先沿四个问题深入:build 产物如何决定运行时;URL 如何命中 route kind;RSC request headers 如何改变响应形态;route response cache 与 fetch cache 如何互相独立又共享 incremental cache。抓住这四个问题,Next.js 就不再是一堆庞大的目录,而是一条可追踪、可调试、可解释的运行时主链路。

                 
基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-06-28 16:39:07 HTTP/1.1 GET : https://www.yeyulingfeng.com/a/807847.html
  2. 运行时间 : 0.178733s [ 吞吐率:5.59req/s ] 内存消耗:4,676.13kb 文件加载:145
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=5f6914a456dd357eeadb9ef0513c48f7
  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.000769s ] mysql:host=127.0.0.1;port=3306;dbname=wenku;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001142s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000397s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000295s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000486s ]
  6. SELECT * FROM `set` [ RunTime:0.000209s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000518s ]
  8. SELECT * FROM `article` WHERE `id` = 807847 LIMIT 1 [ RunTime:0.000504s ]
  9. UPDATE `article` SET `lasttime` = 1782635947 WHERE `id` = 807847 [ RunTime:0.017373s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.003593s ]
  11. SELECT * FROM `article` WHERE `id` < 807847 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000597s ]
  12. SELECT * FROM `article` WHERE `id` > 807847 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000455s ]
  13. SELECT * FROM `article` WHERE `id` < 807847 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.000800s ]
  14. SELECT * FROM `article` WHERE `id` < 807847 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.000817s ]
  15. SELECT * FROM `article` WHERE `id` < 807847 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.001343s ]
0.181792s