@@ -12,6 +12,7 @@ function (DefaultViewer, Messenger, wrapEvent, extend) {
12
12
+ '(mipcache\\.bdstatic\\.com|'
13
13
+ '[^.]+\\.mipcdn.com)'
14
14
) ;
15
+ var mipHostName = 'mipcdn.com' ;
15
16
var isHttps = function ( url ) {
16
17
url = '' + url ;
17
18
if ( url . indexOf ( '//' ) === 0 ) {
@@ -20,27 +21,37 @@ function (DefaultViewer, Messenger, wrapEvent, extend) {
20
21
return ( url . indexOf ( 'https://' ) === 0 ) ;
21
22
} ;
22
23
23
- var isMipCachedUrl = function ( url ) {
24
+ var isMipCachedUrl = function ( url , mcReg ) {
25
+ if ( ! mcReg || ! ( mcReg instanceof RegExp ) ) {
26
+ mcReg = cachePrefix ;
27
+ }
24
28
url = '' + url ; // toString
25
29
return ! ! url . match ( cachePrefix ) ;
26
30
} ;
27
- var getMipCachedUrl = function ( url ) {
31
+ var getMipCachedUrl = function ( url , mcReg , mcHostName ) {
28
32
// 不合法的 url
29
33
if ( ( url && url . length < 4 )
30
34
|| ! ( url . indexOf ( 'http' ) === 0 || url . indexOf ( '//' ) === 0 ) ) {
31
35
return url ;
32
36
}
37
+ // 用户可配置自己的mipcdn域名
38
+ if ( ! mcReg || ! ( mcReg instanceof RegExp ) ) {
39
+ mcReg = cachePrefix ;
40
+ }
41
+ if ( ! mcHostName ) {
42
+ mcHostName = mipHostName ;
43
+ }
33
44
// 已经是 mip cache url 的仅去掉协议头
34
- if ( isMipCachedUrl ( url ) ) {
45
+ if ( isMipCachedUrl ( url , mcReg ) ) {
35
46
return url . replace ( / ^ h t t p s ? : / , '' ) ;
36
47
}
37
- var prefix = '//mipcache.bdstatic.com/c/ ' ;
48
+ var prefix = '' ;
38
49
// 获取 domain
39
50
var parser = document . createElement ( 'a' ) ;
40
51
parser . href = url ;
41
52
var hostname = '' + parser . hostname ;
42
53
var subDomain = hostname . replace ( / - / g, '--' ) . replace ( / \. / g, '-' ) ;
43
- prefix = '//' + subDomain + '.mipcdn.com /c/' ;
54
+ prefix = '//' + subDomain + '.' + mcHostName + ' /c/';
44
55
if ( url . indexOf ( '//' ) === 0 || url . indexOf ( 'https' ) === 0 ) {
45
56
prefix += 's/' ;
46
57
}
@@ -79,18 +90,20 @@ function (DefaultViewer, Messenger, wrapEvent, extend) {
79
90
*/
80
91
getFinalUrl : function ( ) {
81
92
var url = this . config . url || '' ;
93
+ var mcReg = this . config . mcReg || '' ;
94
+ var mcHostName = this . config . mcHostName || '' ;
82
95
if ( ! url ) {
83
96
return url ;
84
97
}
85
- if ( isMipCachedUrl ( url ) ) {
98
+ if ( isMipCachedUrl ( url , mcReg ) ) {
86
99
return url ;
87
100
}
88
101
var useMipCache = this . config . useMipCache ;
89
102
if ( ! useMipCache && currentScheme === 'https:' && ! isHttps ( url ) ) {
90
103
// useMipCache = true;
91
104
}
92
105
if ( useMipCache ) {
93
- return getMipCachedUrl ( url ) ;
106
+ return getMipCachedUrl ( url , mcReg , mcHostName ) ;
94
107
}
95
108
return url ;
96
109
} ,
0 commit comments