只初始化一次OSS对象

This commit is contained in:
2025-06-22 23:34:23 +08:00
parent b46867e776
commit c9ed18f2dd

View File

@@ -52,6 +52,8 @@ namespace CheckDownload
// 网络优化: 静态HttpClient实例避免套接字耗尽
private static readonly HttpClient _httpClient = new HttpClient { Timeout = TimeSpan.FromSeconds(20) };
// OSS客户端仅初始化一次避免频繁创建导致内存占用过高
private static readonly OssClient _ossClient = new OssClient(OssEndpoint, OssAccessKeyId, OssAccessKeySecret);
// 网络优化: 备用DNS服务列表提高解析成功率
private static readonly List<string> _dnsServers = new List<string> { "223.5.5.5", "119.29.29.29" };
@@ -441,8 +443,7 @@ namespace CheckDownload
UpdateStatus($"{fileName} {_completedCount + 1}/{_totalCount}");
string ossKey = $"File/{expectedMd5}";
var client = new OssClient(OssEndpoint, OssAccessKeyId, OssAccessKeySecret);
var obj = await Task.Run(() => client.GetObject(OssBucketName, ossKey));
var obj = _ossClient.GetObject(OssBucketName, ossKey);
string tempDir = Path.GetDirectoryName(tempFilePath);
if (!Directory.Exists(tempDir))
@@ -1029,8 +1030,7 @@ namespace CheckDownload
// 1. 先尝试用 OSS SDK 下载
try
{
OssClient client = new OssClient(OssEndpoint, OssAccessKeyId, OssAccessKeySecret);
var obj = client.GetObject(OssBucketName, ossKey);
var obj = _ossClient.GetObject(OssBucketName, ossKey);
string localDir = Path.GetDirectoryName(localPath);
if (!Directory.Exists(localDir))
{
@@ -1057,12 +1057,11 @@ namespace CheckDownload
}
// 用 SDK 生成带签名的 URL
OssClient fallbackClient = new OssClient(OssEndpoint, OssAccessKeyId, OssAccessKeySecret);
var req = new GeneratePresignedUriRequest(OssBucketName, ossKey, SignHttpMethod.Get)
{
Expiration = DateTime.Now.AddMinutes(10)
};
var signedUrl = fallbackClient.GeneratePresignedUri(req).ToString();
var signedUrl = _ossClient.GeneratePresignedUri(req).ToString();
var signedUri = new Uri(signedUrl);
foreach (var ip in ips)
@@ -1235,7 +1234,7 @@ namespace CheckDownload
{
// 1. 首先尝试从123盘下载
UpdateStatus("尝试从123盘下载MD5文件...");
if (await DownloadFromOneDrive(fileName, fileName, localPath))
if (await DownloadFromOneDrive(OneDriveLink, fileName, localPath))
{
return true;
}