NuGet 更新库新版本的缓存问题
我有一个 NuGet 库有新的版本,但是我的服务器速度不够快,此时我第一次使用 NuGet 还原找不到库。在我服务器索引完成之后,再次使用 NuGet 会依然找不到这个库,而此时服务器准备完成。这是 NuGet 的缓存的坑
我使用了 BaGet 搭建我私有的 NuGet 服务器,他的速度很快,但是索引一个上传的 NuGet 库依然需要一定的时间。如果在 NuGet 服务器还没准备完成之前调用了 NuGet 的 restore 命令,此时预期是找不到 NuGet 的这个新版本的库
但是在 NuGet 服务器准备完成之后,再次调用 NuGet 的还原命令,包括 dotnet restore 都会提示找不到这个版本的库,需要等待超长的时间才能拉
一开始我以为是自己的 NuGet 服务器性能太差,后续在 WPF 官方开源仓库里面学到了这是 NuGet 的坑,在 WPF 的 Merge WPF 5.0 GA (release/5.0) into WPF master by ryalanms · Pull Request #3605 · dotnet/wpf 可以看到如下代码
Avoid using the http cache as workaround for https://github.com/NuGet/Home/issues/3116
在 NuGet 的官方开源仓库有小伙伴提出 NuGet should refresh its HTTP cache if it can’t find the package requested · Issue #3116 · NuGet/Home
也就是 NuGet 没有刷新自己缓存认为不存在某个库,解决方法是加上 No Cache 命令,如下面代码
NuGet restore -NoCache
或
dotnet restore --no-cache
这是因为在 http-cache 文件夹里面没有刷新,关于这个文件夹请看 How to manage the global packages, cache, temp folders in NuGet
路径如下
- Windows:
%localappdata%NuGetv3-cache
- Mac/Linux:
~/.local/share/NuGet/v3-cache
可以使用下面代码清理
nuget locals http-cache -clear
或
dotnet nuget locals http-cache --clear
使用 No Cache 需要重新下载 NuGet 库,此时的速度比较慢,而使用清理 http-cache 只是刷新版本号的字符串,速度会更快。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 有赞发号器多机房方案
- python爬虫以及后端开发--实用加密模板整理
- APP脱壳方法三
- Flink Checkpoint 原理流程以及常见失败原因分析
- Docker原理之 - OverlayFS设计与实现
- 有赞零售跨平台打印库方案
- [Go] Golang练习项目-GO语言实现快速排序-第一个数作为基准更容易理解
- 有赞移动基础设施建设的实践和思考
- 大数据理论篇HDFS的基石——Google File System
- 6. 二十不惑,ObjectMapper使用也不再迷惑
- 接口自动化对比工具实践
- 什么?Java9这些史诗级更新你都不知道?Java9特性一文打尽!
- 利用 Arthas 精准定位 Java 应用 CPU 负载过高问题
- 你想了解的JDK 10版本更新都在这里
- Linux Page Cache调优在 Kafka 中的应用