-
Notifications
You must be signed in to change notification settings - Fork 84
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
新增syncMode为none时的缓存依赖功能 #366
Comments
@hezhengxu2018 来贡献一个? |
可以试一下。没有后端开发经验,可能会出现很多反模式。 |
cnpmcore在设计之初就是一个主动同步的npm仓库,而verdaccio和nexus则只有代理仓库的功能,两者在实现上有所不同。在实际实现代理功能的过程中发现比预期的要复杂,同步是正向的添加依赖,缓存是逆向的添加依赖,代理缓存时不能直接复用之前同步的逻辑。计划修改内容如下:
上述逻辑中是否存在不合理的或者不完善的部分? |
@hezhengxu2018 挺完善的,可以动手起来。我们走的是持续迭代模式,最初版本做到基本可用即可。 |
#390 暂时没有实现新增数据库表及定时更新的功能,目前仅通过nfs的storeKey访问代理的缓存。这两个功能想基本的功能验证过了再添加。另外缓存包的逻辑很多地方是用的PackageSyncerService里的逻辑,但是细节的地方又不一样。这部分逻辑在更新缓存的定时任务的时候也会用到,希望能提取出来。 |
将proxyMode拆分成syncSpecificVersion和proxyMode两次pr |
直接使用nfs上的文件不是一个好设计,经常会忘了清理nfs上的文件导致返回不符合预期。可以直接存在数据库中或者至少应该通过数据库来获取nfs文件的地址,而不是直接通过key访问。 |
nfs 是给本地开发使用的,真实部署场景都是走云存储。 |
基础的需求是对标
Verdaccio
的代理时缓存依赖或者Nexus
的代理仓库缓存的功能。即不会创建定时任务去同步依赖,在当前仓库依赖找不到,重定向到上游仓库时对包的信息做缓存,下次访问时不会再出现找不到依赖重定向的情况。由于没有创建同步任务,仓库的存储压力与网络带宽的压力也会大大减少。对于中小型公司来说不会用到整个npm仓库的依赖也不需要同步某个依赖的所有版本,相对于
all
和exist
模式来说开启缓存的none
会是更好的选择。相对于 #335 syncByInstall 功能来说是一种更懒的模式。计划在config文件中新增
cacheWhenInstall
选项,仅在syncMode
为none
时生效。如果有更符合直觉理解的配置项或者可以合并的模式可以讨论。The text was updated successfully, but these errors were encountered: