
行为:在进入博客的后台管理页面时候,要发送一个 get 请求给开发者的后端服务程序。
发现原因:
issue 里有人提到进入后台管理页面需要 30s 左右,我自己也发现进入后台管理页面很慢很慢,就去跟踪了下代码。
相关代码:
这里是自己部署的服务端处理来自/api/admin/meta 的请求的
https://github.com/Mereithhh/vanblog/blob/master/packages/server/src/controller/admin/meta/meta.controller.ts
这部分具体代码:
@ApiTags('meta') @UseGuards(...AdminGuard) @ApiToken @Controller('/api/admin/meta') export class MetaController { constructor(private readonly metaProvider: MetaProvider) {} @Get() async getAllMeta(@Req() req: Request) { const meta = await this.metaProvider.getAll(); const serverData = await getVersionFromServer(); const data = { version: version, latestVersion: serverData?.version || version, updatedAt: serverData?.updatedAt || new Date(), user: req.user, baseUrl: meta.siteInfo.baseUrl, enableComment: meta.siteInfo.enableComment || 'true', allowDomains: process.env.VAN_BLOG_ALLOW_DOMAINS || '', }; return { statusCode: 200, data, }; } } 其中有一条函数执行是 getVersionFromServer,这里就会发送请求了。 https://github.com/Mereithhh/vanblog/blob/master/packages/server/src/utils/getVersion.ts
import axios from 'axios'; export const getVersiOnFromServer= async () => { try { let { data } = await axios.get('https://api.mereith.com/vanblog/version'); data = data?.data || {}; if (!data?.version) { return null; } return { version: data.version, updatedAt: data?.updatedAt || data?.upadtedAt, }; } catch (err) { return null; } }; 其实也能理解开发者,可能后期要上收费主题啥的,要做验证。但是我个人已经把这个博客程序给卸载,vps 重装系统了。
1 renfei 2023 年 8 月 15 日 我觉得,这些代码,只是为了去他那获取新的版本号,然后提醒有新版本更新 但是,完全可以异步请求,啥时候有回应了再弹提醒,不明白为啥要用阻塞的同步请求 |
2 cnleon 2023 年 8 月 15 日 无法接受这种行为,而且这种动态的一般漏洞多和性能还不行。 |
5 idragonet 2023 年 8 月 15 日 自建博客。 |
6 airyland 2023 年 8 月 15 日 过度侵入了 |
7 kingfalse 2023 年 8 月 15 日 via Android WordPress 吧,这些乱七八糟的,就很恶心。 |
8 whileFalse 2023 年 8 月 15 日 via Android @kingfalse WordPress 不会检查新版本吗 |
9 cyp0633 2023 年 8 月 16 日 要是就这么点遥测的话个人觉得没关系,但会小心之后的改动 |
10 slowman 2023 年 8 月 16 日 既然是开源的那就自己改了嘛, 开源代码都是 AS IS 提供. 有啥接不接受 |
11 msg7086 2023 年 8 月 16 日 > 就怕哪天哪个版本升级,就开始塞奇怪的东西了 任何一个软件都是这样的。 |