瀏覽代碼

0016679: 【视频课堂】来回切换视频标签后,课程封面有的加载的较慢,达到10秒

denny 1 年之前
父節點
當前提交
4a5515386d
共有 2 個文件被更改,包括 57 次插入1 次删除
  1. 52 1
      Service/EducationService.Course.cs
  2. 5 0
      Service/EducationService.cs

+ 52 - 1
Service/EducationService.Course.cs

@@ -32,6 +32,7 @@ using WingInterfaceLibrary.DTO.User;
 using WingInterfaceLibrary.Request.User;
 using WingServerCommon.Config;
 using WingServerCommon.Config.Parameters;
+using System.IO;
 
 namespace WingEducationService.Service
 {
@@ -155,6 +156,47 @@ namespace WingEducationService.Service
             return !string.IsNullOrWhiteSpace(courseCode);
         }
 
+        /// <summary>
+        /// 适配最优cdn地址
+        /// </summary>
+        /// <param name="requestUrl">源文件地址</param>
+        /// <returns>cdn地址</returns>
+        private string GetAdapterCDN(string requestUrl)
+        {
+            if (!string.IsNullOrEmpty(requestUrl))
+            {
+                //flyinsono-bj-1300984704|ap-beijing;flyinsono-hk-1300984704|ap-hongkong;flyinsono-fra-1300984704|eu-frankfurt
+                //如果是cdn则使用新的,如果是源站,则直接返回
+                var tempList = _otherNodes.Split(";");
+                var sourceNodeList = new List<string>();
+                foreach(var nodeInfo in tempList)
+                {
+                    var sourceNode = nodeInfo.Split("|")[0];
+                    sourceNodeList.Add(sourceNode);
+                }
+
+                if (sourceNodeList?.Count > 0 && !string.IsNullOrEmpty(_vodHostNode))
+                {
+                    var isReturn = false;
+                    foreach(var item in sourceNodeList)
+                    {
+                        if (requestUrl.Contains(item) || requestUrl.Contains(_vodHostNode))
+                        {
+                            isReturn = true;
+                        }
+                    }
+                    if (isReturn)
+                    {
+                        return requestUrl;
+                    }
+                }
+                var fileName = Path.GetFileName(requestUrl);
+                var newUrl = _curCDNHost + "/" + fileName;
+                return newUrl;
+            }
+            return "";
+        }
+
         /// <summary>
         /// 通用课程列表查询接口
         /// </summary>
@@ -224,7 +266,7 @@ namespace WingEducationService.Service
                         CourseIntro = pageDataItem.CourseIntro,
                         TeacherCode = pageDataItem.TeacherCode,
                         TeacherName = pageDataItem.TeacherName,
-                        Cover = pageDataItem.Cover,
+                        Cover = GetAdapterCDN(pageDataItem.Cover),
                         StartTime = pageDataItem.StartTime,
                         Duration = pageDataItem.Duration,
                         CourseType = pageDataItem.CourseType,
@@ -599,6 +641,7 @@ namespace WingEducationService.Service
             var courseShareUrl = EnvironmentConfigManager.GetParammeter<StringParameter>("Share", "CourseShareUrl").Value;
             resultData.CourseLiveUrl = string.Format(courseLiveUrl, code);
             resultData.CourseShareUrl = string.Format(courseShareUrl, code);
+            resultData.Cover = GetAdapterCDN(resultData.Cover);
             return resultData;
         }
 
@@ -640,6 +683,10 @@ namespace WingEducationService.Service
                     {
                         Codes = courseList
                     });
+                    foreach(var item in courseInfos)
+                    {
+                        item.Cover = GetAdapterCDN(item.Cover);
+                    }
                     coursePages.PageData = courseInfos.ToList();
                 }
             }
@@ -681,6 +728,10 @@ namespace WingEducationService.Service
                 if (albumList != null && albumList.Count > 0)
                 {
                     albumInfos = await _courseDBService.FindAllAlbumListByAlbumCodesDBAsync(albumList);
+                    foreach(var item in albumInfos)
+                    {
+                        item.Cover = GetAdapterCDN(item.Cover);
+                    }
                     courseAlbumPages.PageData = albumInfos.ToList();
                 }
             }

+ 5 - 0
Service/EducationService.cs

@@ -49,6 +49,11 @@ namespace WingEducationService.Service
         private IPaymentService _paymentService;
         private INotificationService _notificationService;
         private IRtcService _rtcService;
+        private string _otherNodes = EnvironmentConfigManager.GetParammeter<StringParameter>("Storage", "OtherNodes").Value;        
+        private string _curCDNHost => EnvironmentConfigManager.GetParammeter<StringParameter>("Storage", "CDNServerUrl").Value;   
+        private string _vodHostNode => EnvironmentConfigManager.GetParammeter<StringParameter>("VodPlayer", "VodHostNode").Value;
+
+        
         //计时器
         private DateTime _scheduledTime;
         //线程定时器