新增DNS缓存功能

pull/96/head
lyswhut 2019-09-23 13:24:32 +08:00
parent f7267806df
commit f63f645696
10 changed files with 51 additions and 15 deletions

19
package-lock.json generated
View File

@ -1,6 +1,6 @@
{
"name": "lx-music-desktop",
"version": "0.5.5",
"version": "0.6.0",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
@ -1491,8 +1491,7 @@
"asap": {
"version": "2.0.6",
"resolved": "https://registry.npm.taobao.org/asap/download/asap-2.0.6.tgz",
"integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=",
"dev": true
"integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY="
},
"asn1": {
"version": "0.2.4",
@ -4572,6 +4571,15 @@
"buffer-indexof": "^1.0.0"
}
},
"dnscache": {
"version": "1.0.2",
"resolved": "https://registry.npm.taobao.org/dnscache/download/dnscache-1.0.2.tgz",
"integrity": "sha1-/Twk1mwUFiX1lMd756ja/uKmbIo=",
"requires": {
"asap": "^2.0.6",
"lodash.clone": "^4.5.0"
}
},
"doctrine": {
"version": "3.0.0",
"resolved": "https://registry.npm.taobao.org/doctrine/download/doctrine-3.0.0.tgz",
@ -8622,6 +8630,11 @@
"integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=",
"dev": true
},
"lodash.clone": {
"version": "4.5.0",
"resolved": "https://registry.npm.taobao.org/lodash.clone/download/lodash.clone-4.5.0.tgz",
"integrity": "sha1-GVhwRQ9aExkkeN9Lw9I9LeoZB7Y="
},
"lodash.clonedeep": {
"version": "3.0.2",
"resolved": "https://registry.npm.taobao.org/lodash.clonedeep/download/lodash.clonedeep-3.0.2.tgz",

View File

@ -196,6 +196,7 @@
"dependencies": {
"axios": "^0.19.0",
"crypto-js": "^3.1.9-1",
"dnscache": "^1.0.2",
"electron-log": "^3.0.8",
"electron-store": "^5.0.0",
"electron-updater": "^4.1.2",

View File

@ -2,3 +2,6 @@
- 新增试听列表**滚动条位置恢复**设置(可自动恢复到上次离开时的列表滚动位置),本功能默认开启,若不需要可到设置-列表设置将其关闭
# 优化
- 新增DNS解析缓存加快请求速度

View File

@ -8,6 +8,7 @@ const api_test = {
method: 'get',
timeout,
headers,
family: 4,
})
requestObj.promise = requestObj.promise.then(({ body }) => {
return body.code === 0 ? Promise.resolve({ type, url: body.data }) : Promise.reject(new Error(requestMsg.fail))

View File

@ -8,6 +8,7 @@ const api_test = {
method: 'get',
timeout,
headers,
family: 4,
})
requestObj.promise = requestObj.promise.then(({ body }) => {
return body.code === 0 ? Promise.resolve({ type, url: body.data }) : Promise.reject(new Error(requestMsg.fail))
@ -19,6 +20,7 @@ const api_test = {
method: 'get',
timeout,
headers,
family: 4,
})
requestObj.promise = requestObj.promise.then(({ body }) => {
return body.code === 0 ? Promise.resolve(body.data) : Promise.reject(new Error(requestMsg.fail))
@ -30,6 +32,7 @@ const api_test = {
method: 'get',
timeout,
headers,
family: 4,
})
requestObj.promise = requestObj.promise.then(({ body }) => {
return body.code === 0 ? Promise.resolve(body.data) : Promise.reject(new Error(requestMsg.fail))

View File

@ -7,6 +7,7 @@ const api_temp = {
method: 'get',
headers,
timeout,
family: 4,
})
requestObj.promise = requestObj.promise.then(({ body }) => {
return body.code === 0 ? Promise.resolve({ type, url: body.data }) : Promise.reject(new Error(body.msg))

View File

@ -19,6 +19,7 @@ const api_test = {
method: 'get',
timeout,
headers,
family: 4,
})
requestObj.promise = requestObj.promise.then(({ body }) => {
return body.code === 0 ? Promise.resolve({ type, url: body.data }) : Promise.reject(new Error(requestMsg.fail))

View File

@ -8,6 +8,7 @@ const api_messoer = {
method: 'get',
timeout,
headers,
family: 4,
})
requestObj.promise = requestObj.promise.then(({ body }) => {
return body.code === 200 ? Promise.resolve({ type, url: body.data }) : Promise.reject(new Error(requestMsg.fail))

View File

@ -8,6 +8,7 @@ const api_test = {
method: 'get',
timeout,
headers,
family: 4,
})
requestObj.promise = requestObj.promise.then(({ body }) => {
return body.code === 0 ? Promise.resolve({ type, url: body.data }) : Promise.reject(new Error(requestMsg.fail))
@ -19,6 +20,7 @@ const api_test = {
method: 'get',
timeout,
headers,
family: 4,
})
requestObj.promise = requestObj.promise.then(({ body }) => {
return body.code === 0 ? Promise.resolve(body.data) : Promise.reject(new Error(requestMsg.fail))
@ -30,6 +32,7 @@ const api_test = {
method: 'get',
timeout,
headers,
family: 4,
})
requestObj.promise = requestObj.promise.then(({ body }) => {
return body.code === 0 ? Promise.resolve(body.data) : Promise.reject(new Error(requestMsg.fail))

View File

@ -5,7 +5,14 @@ import { requestMsg } from './message'
import { bHh } from './music/options'
// import fs from 'fs'
const headers = {
import dnscache from 'dnscache'
dnscache({
enable: true,
ttl: 21600,
cachesize: 1000,
})
const defaultHeaders = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36',
}
// var proxyUrl = "http://" + user + ":" + password + "@" + host + ":" + port;
@ -221,26 +228,28 @@ const getProxyInfo = () => window.globalObj.proxy.enable
? `http://${window.globalObj.proxy.username}:${window.globalObj.proxy.password}@${window.globalObj.proxy.host}:${window.globalObj.proxy.port};`
: undefined
const fetchData = (url, method, options, callback) => {
const fetchData = (url, method, {
headers = {},
format = 'json',
timeout = 1000,
...options
}, callback) => {
// console.log(url, options)
console.log('---start---', url)
if (options.headers && options.headers[bHh]) {
if (headers[bHh]) {
let s = Buffer.from(bHh, 'hex').toString()
s = s.replace(s.substr(-1), '')
s = Buffer.from(s, 'base64').toString()
options.headers[s] = !!s
delete options.headers[bHh]
headers[s] = !!s
delete headers[bHh]
}
return request(url, {
...options,
method,
headers: Object.assign({}, headers, options.headers || {}),
Origin: options.origin,
body: options.body,
form: options.form,
formData: options.formData,
timeout: options.timeout || 10000,
headers: Object.assign({}, defaultHeaders, headers),
timeout,
proxy: getProxyInfo(),
json: options.format === undefined || options.format === 'json',
json: format === 'json',
}, (err, resp, body) => {
if (err) return callback(err, null)
callback(null, resp, body)