mirror of
https://github.com/SukkaW/Surge.git
synced 2025-12-15 18:50:34 +08:00
Perf: improve speedtest hosts
This commit is contained in:
parent
175ba65127
commit
2d9c401219
@ -13,7 +13,7 @@ import { readFileIntoProcessedArray } from './lib/fetch-text-by-line';
|
|||||||
import { TTL, deserializeArray, fsFetchCache, serializeArray } from './lib/cache-filesystem';
|
import { TTL, deserializeArray, fsFetchCache, serializeArray } from './lib/cache-filesystem';
|
||||||
import { createMemoizedPromise } from './lib/memo-promise';
|
import { createMemoizedPromise } from './lib/memo-promise';
|
||||||
|
|
||||||
import { setAddFromArrayCurried } from './lib/set-add-from-array';
|
import { createTrie } from './lib/trie';
|
||||||
|
|
||||||
const s = new Sema(2);
|
const s = new Sema(2);
|
||||||
|
|
||||||
@ -90,101 +90,103 @@ const getPreviousSpeedtestDomainsPromise = createMemoizedPromise(async () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
export const buildSpeedtestDomainSet = task(import.meta.main, import.meta.path)(async (span) => {
|
export const buildSpeedtestDomainSet = task(import.meta.main, import.meta.path)(async (span) => {
|
||||||
// Predefined domainset
|
const domainTrie = createTrie(
|
||||||
/** @type {Set<string>} */
|
[
|
||||||
const domains = new Set<string>([
|
// speedtest.net
|
||||||
// speedtest.net
|
'.speedtest.net',
|
||||||
'.speedtest.net',
|
'.speedtestcustom.com',
|
||||||
'.speedtestcustom.com',
|
'.ooklaserver.net',
|
||||||
'.ooklaserver.net',
|
'.speed.misaka.one',
|
||||||
'.speed.misaka.one',
|
'.speedtest.rt.ru',
|
||||||
'.speedtest.rt.ru',
|
'.speedtest.aptg.com.tw',
|
||||||
'.speedtest.aptg.com.tw',
|
'.speedtest.gslnetworks.com',
|
||||||
'.speedtest.gslnetworks.com',
|
'.speedtest.jsinfo.net',
|
||||||
'.speedtest.jsinfo.net',
|
'.speedtest.i3d.net',
|
||||||
'.speedtest.i3d.net',
|
'.speedtestkorea.com',
|
||||||
'.speedtestkorea.com',
|
'.speedtest.telus.com',
|
||||||
'.speedtest.telus.com',
|
'.speedtest.telstra.net',
|
||||||
'.speedtest.telstra.net',
|
'.speedtest.clouvider.net',
|
||||||
'.speedtest.clouvider.net',
|
'.speedtest.idv.tw',
|
||||||
'.speedtest.idv.tw',
|
'.speedtest.frontier.com',
|
||||||
'.speedtest.frontier.com',
|
'.speedtest.orange.fr',
|
||||||
'.speedtest.orange.fr',
|
'.speedtest.centurylink.net',
|
||||||
'.speedtest.centurylink.net',
|
'.srvr.bell.ca',
|
||||||
'.srvr.bell.ca',
|
'.speedtest.contabo.net',
|
||||||
'.speedtest.contabo.net',
|
'speedtest.hk.chinamobile.com',
|
||||||
'speedtest.hk.chinamobile.com',
|
'speedtestbb.hk.chinamobile.com',
|
||||||
'speedtestbb.hk.chinamobile.com',
|
'.hizinitestet.com',
|
||||||
'.hizinitestet.com',
|
'.linknetspeedtest.net.br',
|
||||||
'.linknetspeedtest.net.br',
|
'speedtest.rit.edu',
|
||||||
'speedtest.rit.edu',
|
'speedtest.ropa.de',
|
||||||
'speedtest.ropa.de',
|
'speedtest.sits.su',
|
||||||
'speedtest.sits.su',
|
'speedtest.tigo.cr',
|
||||||
'speedtest.tigo.cr',
|
'speedtest.upp.com',
|
||||||
'speedtest.upp.com',
|
'.speedtest.pni.tw',
|
||||||
'.speedtest.pni.tw',
|
'.speed.pfm.gg',
|
||||||
'.speed.pfm.gg',
|
'.speedtest.faelix.net',
|
||||||
'.speedtest.faelix.net',
|
'.speedtest.labixe.net',
|
||||||
'.speedtest.labixe.net',
|
'.speedtest.warian.net',
|
||||||
'.speedtest.warian.net',
|
'.speedtest.starhub.com',
|
||||||
'.speedtest.starhub.com',
|
'.speedtest.gibir.net.tr',
|
||||||
'.speedtest.gibir.net.tr',
|
'.speedtest.ozarksgo.net',
|
||||||
'.speedtest.ozarksgo.net',
|
'.speedtest.exetel.com.au',
|
||||||
'.speedtest.exetel.com.au',
|
'.speedtest.sbcglobal.net',
|
||||||
'.speedtest.sbcglobal.net',
|
'.speedtest.leaptel.com.au',
|
||||||
'.speedtest.leaptel.com.au',
|
'.speedtest.windstream.net',
|
||||||
'.speedtest.windstream.net',
|
'.speedtest.vodafone.com.au',
|
||||||
'.speedtest.vodafone.com.au',
|
'.speedtest.rascom.ru',
|
||||||
'.speedtest.rascom.ru',
|
'.speedtest.dchost.com',
|
||||||
'.speedtest.dchost.com',
|
'.speedtest.highnet.com',
|
||||||
'.speedtest.highnet.com',
|
'.speedtest.seattle.wa.limewave.net',
|
||||||
'.speedtest.seattle.wa.limewave.net',
|
'.speedtest.optitel.com.au',
|
||||||
'.speedtest.optitel.com.au',
|
'.speednet.net.tr',
|
||||||
'.speednet.net.tr',
|
'.speedtest.angolacables.co.ao',
|
||||||
'.speedtest.angolacables.co.ao',
|
'.ookla-speedtest.fsr.com',
|
||||||
'.ookla-speedtest.fsr.com',
|
'.speedtest.comnet.com.tr',
|
||||||
'.speedtest.comnet.com.tr',
|
'.speedtest.gslnetworks.com.au',
|
||||||
'.speedtest.gslnetworks.com.au',
|
'.test.gslnetworks.com.au',
|
||||||
'.test.gslnetworks.com.au',
|
'.speedtest.gslnetworks.com',
|
||||||
'.speedtest.gslnetworks.com',
|
'.speedtestunonet.com.br',
|
||||||
'.speedtestunonet.com.br',
|
'.speedtest.alagas.net',
|
||||||
'.speedtest.alagas.net',
|
'speedtest.surfshark.com',
|
||||||
'speedtest.surfshark.com',
|
'.speedtest.aarnet.net.au',
|
||||||
'.speedtest.aarnet.net.au',
|
'.ookla.rcp.net',
|
||||||
'.ookla.rcp.net',
|
'.ookla-speedtests.e2ro.com',
|
||||||
'.ookla-speedtests.e2ro.com',
|
'.speedtest.com.sg',
|
||||||
'.speedtest.com.sg',
|
'.ookla.ddnsgeek.com',
|
||||||
'.ookla.ddnsgeek.com',
|
'.speedtest.pni.tw',
|
||||||
'.speedtest.pni.tw',
|
// Cloudflare
|
||||||
// Cloudflare
|
'.speed.cloudflare.com',
|
||||||
'.speed.cloudflare.com',
|
// Wi-Fi Man
|
||||||
// Wi-Fi Man
|
'.wifiman.com',
|
||||||
'.wifiman.com',
|
'.wifiman.me',
|
||||||
'.wifiman.me',
|
'.wifiman.ubncloud.com',
|
||||||
'.wifiman.ubncloud.com',
|
// Fast.com
|
||||||
// Fast.com
|
'.fast.com',
|
||||||
'.fast.com',
|
// MacPaw
|
||||||
// MacPaw
|
'speedtest.macpaw.com',
|
||||||
'speedtest.macpaw.com',
|
// speedtestmaster
|
||||||
// speedtestmaster
|
'.netspeedtestmaster.com',
|
||||||
'.netspeedtestmaster.com',
|
// Google Search Result of "speedtest", powered by this
|
||||||
// Google Search Result of "speedtest", powered by this
|
'.measurement-lab.org',
|
||||||
'.measurement-lab.org',
|
'.measurementlab.net',
|
||||||
'.measurementlab.net',
|
// Google Fiber legacy speedtest site (new fiber speedtest use speedtestcustom.com)
|
||||||
// Google Fiber legacy speedtest site (new fiber speedtest use speedtestcustom.com)
|
'.speed.googlefiber.net',
|
||||||
'.speed.googlefiber.net',
|
// librespeed
|
||||||
// librespeed
|
'.backend.librespeed.org',
|
||||||
'.backend.librespeed.org',
|
// Apple,
|
||||||
// Apple,
|
'mensura.cdn-apple.com', // From netQuality command
|
||||||
'mensura.cdn-apple.com', // From netQuality command
|
// OpenSpeedtest
|
||||||
// OpenSpeedtest
|
'open.cachefly.net'
|
||||||
'open.cachefly.net'
|
],
|
||||||
]);
|
true,
|
||||||
|
true
|
||||||
|
);
|
||||||
|
|
||||||
await span.traceChildAsync(
|
await span.traceChildAsync(
|
||||||
'fetch previous speedtest domainset',
|
'fetch previous speedtest domainset',
|
||||||
() => getPreviousSpeedtestDomainsPromise()
|
() => getPreviousSpeedtestDomainsPromise()
|
||||||
.then(setAddFromArrayCurried(domains))
|
.then(prevDomains => prevDomains.forEach(domainTrie.add))
|
||||||
);
|
);
|
||||||
|
|
||||||
await new Promise<void>((resolve, reject) => {
|
await new Promise<void>((resolve, reject) => {
|
||||||
@ -222,7 +224,7 @@ export const buildSpeedtestDomainSet = task(import.meta.main, import.meta.path)(
|
|||||||
pMap[keyword] = span.traceChildAsync(`fetch speedtest endpoints: ${keyword}`, () => querySpeedtestApi(keyword)).then(hostnameGroup => {
|
pMap[keyword] = span.traceChildAsync(`fetch speedtest endpoints: ${keyword}`, () => querySpeedtestApi(keyword)).then(hostnameGroup => {
|
||||||
return hostnameGroup.forEach(hostname => {
|
return hostnameGroup.forEach(hostname => {
|
||||||
if (hostname) {
|
if (hostname) {
|
||||||
domains.add(hostname);
|
domainTrie.add(hostname);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@ -245,7 +247,7 @@ export const buildSpeedtestDomainSet = task(import.meta.main, import.meta.path)(
|
|||||||
}).catch(() => reject);
|
}).catch(() => reject);
|
||||||
});
|
});
|
||||||
|
|
||||||
const deduped = span.traceChildSync('sort result', () => sortDomains(domainDeduper(Array.from(domains))));
|
const deduped = span.traceChildSync('sort result', () => sortDomains(domainDeduper(domainTrie)));
|
||||||
|
|
||||||
const description = [
|
const description = [
|
||||||
...SHARED_DESCRIPTION,
|
...SHARED_DESCRIPTION,
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user