资助申请:swap.cow.fi 性能优化 - 打包优化

FromCoW DAO GrantsSourceSnapshotAuthor0xd26E...2efb已关闭查看原文参与讨论

摘要

AI 生成

本资助申请旨在优化 swap.cow.fi 的打包性能,通过异步导入、依赖更新和去重等技术,将初始 JS 加载大小从 7.8 MB 减少至 4.41 MB,提升加载速度超过 1.5 倍。申请者已提供概念验证和 PageSpeed 报告,计划在约一周内完成优化,并请求 800 xDAI + 1000 COW 的资金支持。

注:摘要由 AI 自动生成,可能与正文存在差异,仅供参考。

提案内容

AI 翻译

资助标题

资助申请:swap.cow.fi 性能优化 - 打包优化

作者

高级 Web 开发者 - Konstantin Barabanov: 点击查看
主要联系人 - 点击查看

经验与资质

资助描述

目前,swap 应用的构建命令生成的 next js 包大小为:

  • 总大小:19.02 mB (4.52 mB brotli)
  • 初始 JS 加载大小:7.8 mB (2.16 mB brotli)

我的测试表明,我们可以将这些大小减少到:

  • 总大小:16.63 mB (4.12 mB brotli)
  • 初始 JS 加载大小:4.41 mB (1.32 mB brotli)

因此,初始加载速度提升超过 1.5 倍

这可以通过一些打包优化技术实现:无需对代码库进行重大更改,也无需大量工作。

以下是应用的优化列表:

  • 更新 @1inch/permit-signed-approvals-utils 版本并通过 async 导入使用
    • 该库已归档,因此我们可以复制一些实现以摆脱最常用的部分
    • 此更新导致 @cowprotocol/permit-utils 发生破坏性变更(getPermitUtilsInstance 现在是异步的),因此我们必须发布新的主版本
  • 更新 @safe-global 版本并通过 async 导入使用 @safe-global/api-kit
    • @safe-global 的新版本不再需要 protocol-kitsafe-ethers-lib
    • 不再需要 web3
    • 更新稍微改变了返回类型,因此必须修复
  • 去重 bn.js
  • 更新 @walletconnect
  • 通过 async 导入使用 framer-motion
  • 通过 async 导入使用 lottie-react
  • 通过 async 导入使用 lottie/progressbar-step-*.json
  • 更好地使用 vite 的 manualChunks

此外:许多依赖项的新版本支持 esm,因此我们通过 tree shaking 节省了大量空间。

预期影响

  • 更快的首次绘制和感知性能(> 1.5 倍)。请参见第一条评论中的 PageSpeed 指标对比。

我希望通过此功能提供的其他更改/功能:

  • 更好的块/入口点/资源命名
  • 使用 点击查看 来比较未来的包大小差异

资助类型

基于里程碑

里程碑

里程碑标题持续时间资金请求
里程碑 0概念验证(PoC),准备 PageSpeed Insights 报告已完成400 xDAI + 500 COW
里程碑 1为整洁的 PR 准备更改1天0
里程碑 3更好的命名,bundle-stats 的使用0.5天0
里程碑 4测试1天0
里程碑 5更新贡献文档,设置 eslint 规则0.5天0
里程碑 6提供 PR0天400 xDAI + 500 COW
里程碑 7修复发现的相关问题未知0

时长

我准备在资助批准后立即开始。我不会全职工作,但相信可以在批准后约 1 周内完成。

资金请求

整个功能请求 800 xDAI + 1000 COW。

Gnosis Chain 地址

0xd26ecc4457eb51cde9a5d44d316b3e83d60f2efb

其他信息

我已经完成了一个原型,并将在第一条评论中提供 PageSpeed Insights 报告。

如您所见,首次内容绘制速度指数最大内容绘制等指标在应用这些优化后有所降低。

未来(超出当前范围)的步骤可能包括:

  • 摆脱 web3-react 依赖
  • 通过 react 的 lazy 加载除 swap 之外的每个页面
  • @ethersproject 迁移到 viem
  • 通过 async 导入使用 @uniswap
  • 通过 async 导入使用一些 commonmodules 模块(它们真的很大!)
  • 在 cow sdk 库中:通过 async 导入使用 @safe-global
  • 在 cow sdk 库中:通过 async 导入使用 @defuse-protocol/one-click-sdk-typescript

条款与条件

通过提交此资助申请,我承认并同意受 CoW DAO 参与协议CoW DAO 资助协议条款 的约束。

暗流 © 2026
Undertide Information