@@ -172,6 +172,9 @@ type UCApiOptions struct {
172
172
// 是否使用 HTTPS 协议
173
173
UseHttps bool
174
174
175
+ // 是否加速上传
176
+ AccelerateUploading bool
177
+
175
178
// 单域名重试次数
176
179
RetryMax int
177
180
@@ -231,6 +234,7 @@ func (options *UCApiOptions) getApiStorageClient() *apis.Storage {
231
234
return apis .NewStorage (& http_client.Options {
232
235
Interceptors : []clientv2.Interceptor {},
233
236
UseInsecureProtocol : ! options .UseHttps ,
237
+ AccelerateUploading : options .AccelerateUploading ,
234
238
Resolver : options .Resolver ,
235
239
Chooser : options .Chooser ,
236
240
HostRetryConfig : & clientv2.RetryConfig {RetryMax : options .RetryMax , Retrier : options .Retrier },
@@ -276,7 +280,7 @@ func getRegionByV2(ak, bucket string, options UCApiOptions) (*Region, error) {
276
280
}()
277
281
}
278
282
279
- regionCacheKey := makeRegionCacheKey (ak , bucket , options .Hosts )
283
+ regionCacheKey := makeRegionCacheKey (ak , bucket , options .Hosts , options . AccelerateUploading )
280
284
// check from cache
281
285
if v , ok := regionV2Cache .Load (regionCacheKey ); ok && time .Now ().Before (v .(regionV2CacheValue ).Deadline ) {
282
286
return v .(regionV2CacheValue ).Region , nil
@@ -306,9 +310,13 @@ func getRegionByV2(ak, bucket string, options UCApiOptions) (*Region, error) {
306
310
return newRegion .(* Region ), err
307
311
}
308
312
309
- func makeRegionCacheKey (ak , bucket string , ucHosts []string ) string {
313
+ func makeRegionCacheKey (ak , bucket string , ucHosts []string , accelerateUploading bool ) string {
310
314
hostStrings := fmt .Sprintf ("%v" , ucHosts )
311
- return fmt .Sprintf ("%s:%s:%x" , ak , bucket , md5 .Sum ([]byte (hostStrings )))
315
+ s := fmt .Sprintf ("%s:%s:%x" , ak , bucket , md5 .Sum ([]byte (hostStrings )))
316
+ if accelerateUploading {
317
+ s += ":1"
318
+ }
319
+ return s
312
320
}
313
321
314
322
func _getRegionByV2WithoutCache (ak , bucket string , options UCApiOptions ) (* Region , int64 , error ) {
@@ -323,11 +331,40 @@ func _getRegionByV2WithoutCache(ak, bucket string, options UCApiOptions) (*Regio
323
331
if err != nil {
324
332
return nil , 0 , err
325
333
}
334
+ var srcUpHosts , cdnUpHosts []string
326
335
var rsHost , rsfHost , apiHost , ioVipHost , ioSrcHost string
327
- srcUpHosts := append (response .UpDomains .SourceUpDomains .MainSourceUpDomains , response .UpDomains .SourceUpDomains .BackupSourceUpDomains ... )
328
- srcUpHosts = append (srcUpHosts , response .UpDomains .OldSourceDomains .OldMainSourceUpDomains ... )
329
- cdnUpHosts := append (response .UpDomains .AcceleratedUpDomains .MainAcceleratedUpDomains , response .UpDomains .AcceleratedUpDomains .BackupAcceleratedUpDomains ... )
330
- cdnUpHosts = append (cdnUpHosts , response .UpDomains .OldAcceleratedDomains .OldMainAcceleratedUpDomains ... )
336
+ if options .AccelerateUploading && len (response .UpDomains .AcceleratedUpDomains .MainAcceleratedUpDomains ) > 0 {
337
+ srcUpHosts = make ([]string , 0 ,
338
+ len (response .UpDomains .AcceleratedUpDomains .MainAcceleratedUpDomains )+
339
+ len (response .UpDomains .AcceleratedUpDomains .BackupAcceleratedUpDomains )+
340
+ len (response .UpDomains .OldAcceleratedDomains .OldMainAcceleratedUpDomains )+
341
+ len (response .UpDomains .SourceUpDomains .MainSourceUpDomains )+
342
+ len (response .UpDomains .SourceUpDomains .BackupSourceUpDomains )+
343
+ len (response .UpDomains .OldSourceDomains .OldMainSourceUpDomains ))
344
+ srcUpHosts = append (srcUpHosts , response .UpDomains .AcceleratedUpDomains .MainAcceleratedUpDomains ... )
345
+ srcUpHosts = append (srcUpHosts , response .UpDomains .AcceleratedUpDomains .BackupAcceleratedUpDomains ... )
346
+ srcUpHosts = append (srcUpHosts , response .UpDomains .OldAcceleratedDomains .OldMainAcceleratedUpDomains ... )
347
+ srcUpHosts = append (srcUpHosts , response .UpDomains .SourceUpDomains .MainSourceUpDomains ... )
348
+ srcUpHosts = append (srcUpHosts , response .UpDomains .SourceUpDomains .BackupSourceUpDomains ... )
349
+ srcUpHosts = append (srcUpHosts , response .UpDomains .OldSourceDomains .OldMainSourceUpDomains ... )
350
+ cdnUpHosts = make ([]string , 0 , len (response .UpDomains .AcceleratedUpDomains .MainAcceleratedUpDomains ))
351
+ cdnUpHosts = append (cdnUpHosts , response .UpDomains .AcceleratedUpDomains .MainAcceleratedUpDomains ... )
352
+ } else {
353
+ srcUpHosts = make ([]string , 0 ,
354
+ len (response .UpDomains .SourceUpDomains .MainSourceUpDomains )+
355
+ len (response .UpDomains .SourceUpDomains .BackupSourceUpDomains )+
356
+ len (response .UpDomains .OldSourceDomains .OldMainSourceUpDomains ))
357
+ srcUpHosts = append (srcUpHosts , response .UpDomains .SourceUpDomains .MainSourceUpDomains ... )
358
+ srcUpHosts = append (srcUpHosts , response .UpDomains .SourceUpDomains .BackupSourceUpDomains ... )
359
+ srcUpHosts = append (srcUpHosts , response .UpDomains .OldSourceDomains .OldMainSourceUpDomains ... )
360
+ cdnUpHosts = make ([]string , 0 ,
361
+ len (response .UpDomains .AcceleratedUpDomains .MainAcceleratedUpDomains )+
362
+ len (response .UpDomains .AcceleratedUpDomains .BackupAcceleratedUpDomains )+
363
+ len (response .UpDomains .OldAcceleratedDomains .OldMainAcceleratedUpDomains ))
364
+ cdnUpHosts = append (cdnUpHosts , response .UpDomains .AcceleratedUpDomains .MainAcceleratedUpDomains ... )
365
+ cdnUpHosts = append (cdnUpHosts , response .UpDomains .AcceleratedUpDomains .BackupAcceleratedUpDomains ... )
366
+ cdnUpHosts = append (cdnUpHosts , response .UpDomains .OldAcceleratedDomains .OldMainAcceleratedUpDomains ... )
367
+ }
331
368
if len (response .RsDomains .AcceleratedRsDomains .MainAcceleratedRsDomains ) > 0 {
332
369
rsHost = response .RsDomains .AcceleratedRsDomains .MainAcceleratedRsDomains [0 ]
333
370
}
0 commit comments